我有2列的表:w_id(word id)和txt_id(text id)
例如我有这个值:
-----------------
| w_id | txt_id |
-----------------
| 150 | 7 |
-----------------
| 151 | 7 |
-----------------
| 152 | 7 |
-----------------
| 152 | 7 |
-----------------
| 151 | 8 |
-----------------
| 160 | 8 |
-----------------
| 165 | 8 |
-----------------
我想得到w_id列表女巫只在特定文本中 对于这个表,如果我想获得文本7的单词,它将是150和152。
我需要你的帮助来编写这个查询。 我现在仍在考虑自己解决这个问题。 这张桌子可以很大。数百万行。 所以我需要谨慎地写它
我试试这个但这是错的:这个查询只给我150,而不是152.因为它在7个文本中是两次:
SELECT w_id
FROM tablename
WHERE w_id
IN (
SELECT w_id
FROM tablename
WHERE txt_id = '7'
GROUP BY w_id
)
GROUP BY w_id
HAVING COUNT(w_id) = 1
答案 0 :(得分:3)
SELECT w_id
FROM tableName a
WHERE txt_id = 7 AND
NOT EXISTS
(
SELECT 1
FROM tableName b
WHERE a.w_id = b.w_id AND
txt_id <> 7
)
GROUP BY w_id
您也可以使用LEFT JOIN
,
SELECT a.w_id
FROM tableName a
LEFT JOIN tableName b
ON a.w_id = b.w_id AND
b.txt_id <> 7
WHERE b.w_id IS NULL
GROUP BY a.w_id
答案 1 :(得分:-1)
你能提供更多细节吗?
我可能会根据你的问题获得与bfavaretto相同的SQL。
还有:
我认为如果我们使用
SELECT DISTINCT w_id
FROM your_table_name
WHERE txt_id = 7
结果将是150 151 152