4

2 つのテーブルがあり、両方にユーザー ID があるとします。テーブル 2 にはない、テーブル 1 のすべてのユーザー ID を返す操作を実行したいと考えています。これを行う簡単な方法が必要であることはわかっています。

4

7 に答える 7

6

遅いですが、通常は「not in」などでこれを達成できます。(さまざまな RDBMS システムには、これをより適切な方法で行う関数が他にもあります。たとえば、Oracle には、これに使用できる 'exists' 句があります。

しかし、次のように言うことができます。

select id from table1 where id not in (select id from table2)
于 2011-01-31T23:56:51.687 に答える
5

いくつかの方法があります。を使用した1つのアプローチを次に示しNOT EXISTSます。

SELECT userid
FROM table1
WHERE NOT EXISTS
(
    SELECT *
    FROM table2
    WHERE table1.userid = table2.userid
)

そして、結合を使用した別のアプローチを次に示します。

SELECT table1.userid
FROM table1
LEFT JOIN table2
ON table1.userid = table2.userid
WHERE table2.userid IS NULL

最速のアプローチは、データベースによって異なります。

于 2011-01-31T23:57:05.963 に答える
1

1 つの方法は、TSQL 方言がサポートしている場合にEXCEPTを使用することです。左結合およびヌル テストを実行するのと同じです。

于 2011-01-31T23:58:06.703 に答える
1
SELECT user_id FROM table1 LEFT JOIN table2 ON table1.user_id = table2.user_id WHERE table2.user_id IS NULL;
于 2011-01-31T23:58:57.293 に答える
1

SQL Server の場合:

SELECT id FROM table1
EXCEPT 
SELECT id FROM table2

オラクル:

SELECT id FROM table1
MINUS
SELECT id FROM table2

残り:よくわかりません....

于 2011-02-01T00:00:02.333 に答える
0

これを試して:

SELECT id FROM table1 WHERE id NOT IN
(
    SELECT id FROM table2
)
于 2011-01-31T23:57:04.380 に答える
0
select ID from table1
where ID not in (select ID from table2)
于 2011-01-31T23:57:07.053 に答える