我需要进行mySQL查询,并且不确定格式应该是什么。
以下是这种情况,我有一个包含字段的表 - id,name,type
我会使用类似于以下内容的查询来获取表格中的结果:
SELECT * FROM table WHERE type='1'
但是,我有一个来自另一个查询的ID列表。这些是应从结果中排除的项目。
我确信答案很简单,但我对mySQL查询的了解不足以找到答案。
答案 0 :(得分:5)
一个简单的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)
答案 1 :(得分:3)
您可以使用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 |
+----+--------+
希望这有帮助! :)