1

mySQLクエリを作成する必要がありますが、形式がどうあるべきかわかりません。

これが状況です。id、name、typeのフィールドを持つテーブルがあります

次のようなクエリを使用して、テーブルから結果を取得します。

SELECT * FROM table WHERE type='1'

ただし、別のクエリからのIDのリストがあります。これらは、結果から除外する必要がある項目です。

答えは簡単だと思いますが、答えを見つけるのに十分なmySQLクエリについては知りません。

4

2 に答える 2

5

単純なNOTINが必要なものになります:)値のリストを送信して、値が含まれていないことを確認できます:)

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)
于 2012-06-23T02:52:55.460 に答える
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  |
+----+--------+

お役に立てれば!:)

于 2012-06-23T02:56:42.867 に答える