【问题标题】:Selecting items from MySQL table that are absent in another table从 MySQL 表中选择另一个表中不存在的项目
【发布时间】:2015-02-25 07:58:04
【问题描述】:

表:用户配置文件

+-----------+----------+
|         id| username |
+-----------+----------+
|          1| Carrera  |
|          2| Taylor   |
|          3| Diaz     |
+-----------+----------+

表格:产品

+-----------+----------+
|         id| name     |
+-----------+----------+
|        123| aaaaaaa  |
|        234| bbbbbbb  |
|        456| ccccccc  |
+-----------+----------+

表:购买

+-----------+----------+-----------+
|         id| username | productid |
+-----------+----------+-----------+
|          1| Carrera  | 123       |
|          2| Taylor   | 234       |
|          3| Diaz     | 456       |
+-----------+----------+-----------+

如何选择用户“Carrera”尚未购买的“产品”。

【问题讨论】:

    标签: mysql sql select join left-join


    【解决方案1】:

    正如标题所示,您可以使用 not in 运算符:

    SELECT *
    FROM   products
    WHERE  id NOT IN (SELECT productid
                      FROM   purchase
                      WHERE  username = 'Carrera')
    

    【讨论】:

      【解决方案2】:

      试试这个:

      SELECT P.id, P.name 
      FROM Products P 
      LEFT OUTER JOIN purchase P1 ON P.id = P1.productid AND P1.username = 'Carrera'
      WHERE P1.id IS NULL;
      

      SELECT P.id, P.name
      FROM Products P
      WHERE NOT EXISTS (SELECT 1 
                        FROM purchase P1
                        WHERE P.id = P1.productid AND P1.username = 'Carrera');
      

      【讨论】:

        猜你喜欢
        • 2016-01-05
        • 2012-08-07
        • 1970-01-01
        • 2012-08-09
        • 2012-06-10
        • 1970-01-01
        • 2012-07-30
        相关资源
        最近更新 更多