0

次のようなクエリがあります。

SELECT b.user_name FROM
(SELECT user_name FROM my_table_name
WHERE date='2013-07-11') a
JOIN
(SELECT user_name FROM my_table_name
WHERE date='2013-06-11') b
ON 
a.user_name != b.user_name

6 月に名前が表示されるが 7 月には表示されない JOIN を実行するにはどうすればよいですか?

4

1 に答える 1

2

これは、アンチ結合として知られています。RDBMS がサポートしている場合は、 SQL 標準EXCEPT演算子を使用できます。

SELECT user_name
FROM   my_table_name
WHERE  date = '2013-06-11'
EXCEPT
SELECT user_name
FROM   my_table_name
WHERE  date = '2013-07-11' 

その他の可能性にはNOT INNOT EXISTSまたは以下のようにLEFT OUTER JOIN ... NULL使用できGROUP BYます。

SELECT user_name
FROM   my_table_name
WHERE  date IN ('2013-06-11', '2013-07-11')
GROUP BY user_name
HAVING MAX(date) = '2013-06-11'
于 2013-07-12T21:46:26.557 に答える