所以我在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
如何运作有误解,有人可以帮助解决这个问题吗?
答案 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
)