选择*其中SQL中的关联为空?

时间:2016-06-13 14:25:40

标签: mysql

所以我在SQL中有点迷失,特别是使用正确的语法。

要快点:这些是我的表

我们有产品:

+------------------------+------------------+------+-----+---------------------+----------------+
| Field                  | Type             | Null | Key | Default             | Extra          |
+------------------------+------------------+------+-----+---------------------+----------------+
| id                     | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| slug                   | varchar(255)     | NO   |     | NULL                |                |
| title                  | varchar(255)     | NO   |     | NULL                |                |
| resume                 | varchar(255)     | NO   |     | NULL                |                |
| country_id             | varchar(255)     | NO   |     | NULL                |                |
| city_id                | varchar(255)     | NO   |     | NULL                |                |
+------------------------+------------------+------+-----+---------------------+----------------+

我们有城市:

+------------------+------------------+------+-----+---------------------+----------------+
| Field            | Type             | Null | Key | Default             | Extra          |
+------------------+------------------+------+-----+---------------------+----------------+
| id               | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| country_id       | int(11)          | NO   |     | NULL                |                |
| name             | varchar(255)     | NO   |     | NULL                |                |
+------------------+------------------+------+-----+---------------------+----------------+

我想找的是哪些城市没有产品

所以我基本上尝试过这样的事情:

  

SELECT名称   来自城市   在哪里COUNT(选择*来自城市INNER JOIN   产品ON products.city_id = cities.id)= 0;

我认为我对COUNT如何运作有误解,有人可以帮助解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

您可以使用NOT EXISTS

执行此操作
SELECT name 
FROM cities AS c
WHERE NOT EXISTS (SELECT 1
                  FROM products AS p
                  WHERE p.city_id = c.id)

上述查询返回未链接到产品的所有城市的名称。

答案 1 :(得分:1)

您可以使用以下查询:

SELECT name
FROM cities
WHERE id NOT IN (
    SELECT DISTINCT city_id FROM products
)