mySQL查询;忽略特定的ID值

时间:2012-06-23 02:47:51

标签: mysql

我需要进行mySQL查询,并且不确定格式应该是什么。

以下是这种情况,我有一个包含字段的表 - id,name,type

我会使用类似于以下内容的查询来获取表格中的结果:

SELECT * FROM table WHERE type='1'

但是,我有一个来自另一个查询的ID列表。这些是应从结果中排除的项目。

我确信答案很简单,但我对mySQL查询的了解不足以找到答案。

2 个答案:

答案 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  |
+----+--------+

希望这有帮助! :)