我需要做一个 mySQL 查询,但不确定格式应该是什么。
这是情况,我有一个包含字段的表 - id、name、type
我将使用类似于以下的查询从表中获取结果:
SELECT * FROM table WHERE type='1'
但是,我有一个来自另一个查询的 ID 列表。这些是应从结果中排除的项目。
我确信答案很简单,但我对 mySQL 查询的了解还不够,无法找到答案。
我需要做一个 mySQL 查询,但不确定格式应该是什么。
这是情况,我有一个包含字段的表 - id、name、type
我将使用类似于以下的查询从表中获取结果:
SELECT * FROM table WHERE type='1'
但是,我有一个来自另一个查询的 ID 列表。这些是应从结果中排除的项目。
我确信答案很简单,但我对 mySQL 查询的了解还不够,无法找到答案。
一个简单的 NOT IN 将是您想要的 :) 它可以让您发送一个值列表并确保它不在其中 :)
SELECT * FROM table WHERE ID NOT IN (1,2,3)
您也可以使用子查询来执行此操作,例如:
SELECT id FROM table WHERE ID NOT IN (SELECT id FROM table2 WHERE type = 1)
您可以使用NOT IN
这样的查询:
SELECT * FROM `table` WHERE `type`=1 WHERE `id` NOT IN (SELECT `blocked_ids` FROM `block`);
因此,您将在block
表中阻止 ID!希望这可以帮助!:)
考虑这张表:
+----+-------------+
| id | name |
+----+-------------+
| 1 | America |
| 2 | Europe |
| 3 | India |
| 4 | Japan |
| 5 | Brazil |
| 6 | Switzerland |
| 7 | Syria |
| 8 | Wales |
| 9 | Taiwan |
| 10 | Zaire |
+----+-------------+
和被封锁的桌子:
+-----+
| IDs |
+-----+
| 1 |
| 4 |
| 6 |
| 8 |
| 9 |
+-----+
现在,当我提出如下查询时:
SELECT * FROM `countries` WHERE `id` NOT IN (SELECT * FROM `blocked`);
我得到这个结果:
+----+--------+
| id | name |
+----+--------+
| 2 | Europe |
| 3 | India |
| 5 | Brazil |
| 7 | Syria |
| 10 | Zaire |
+----+--------+
希望这可以帮助!:)