場景:查理、艾米和羅伯特各自填寫了一份調查問卷,要求用戶選擇他們感興趣的所有運動。問題是多項選擇。在表格中,surveyData每一行代表每個用戶選擇的答案之一。所以查理(0001)選擇basketball,rugby,acrobatics和darts。
我想從表中選擇所有surveyDataIds (users)沒有正確選擇basketball (0002)和的人rugby (0003)。我相信我在這里要做的是執行 NAND 型別的操作。
預期結果:查詢此表時,我希望回傳以下內容surveyDataIds:0002和0004。surveyDataIds需要進行分組以防止重復。羅伯特沒有按照他的選擇回傳basketball (0002)。
這是我到目前為止所嘗試過的,從這篇文章中的答案中獲取建議SELECT WHERE multiple records don't exist。不幸的是,它不起作用并且回傳錯誤的結果。
select *
FROM surveyData sd
WHERE NOT EXISTS (
SELECT 1
FROM surveyData sd2
WHERE sd.surveyDataId = sd2.surveyDataId AND sd.chosenInterests in (2, 3)
)
0001 = Charlie
0002 = Amy
0003 = Robert
0004 = Lauren
interest options
0 = tennis
1 = football
2 = basketball
3 = rugby
4 = snooker
5 = acrobatics
6 = bowling
7 = squash
8 = cricket
9 = darts
10 = javelin
表名: surveyData
| 調查資料ID | 選擇的興趣 |
|---|---|
| 0001 | 2 |
| 0001 | 3 |
| 0001 | 5 |
| 0001 | 9 |
| 0002 | 6 |
| 0002 | 7 |
| 0002 | 9 |
| 0002 | 1 |
| 0002 | 4 |
| 0002 | 8 |
| 0003 | 2 |
| 0003 | 7 |
| 0004 | 10 |
uj5u.com熱心網友回復:
使用不在:
select distinct surveyDataId
FROM surveyData
WHERE surveyDataId NOT IN (
SELECT surveyDataId
FROM surveyData
WHERE chosenInterests in (2,3)
);
順便說一句,您使用 EXISTS 的查詢也可以:
select distinct surveyDataId
FROM surveyData sd1
WHERE NOT EXISTS (
SELECT *
FROM surveyData sd2
WHERE sd1.surveyDataId = sd2.surveyDataId and chosenInterests in (2,3)
);
uj5u.com熱心網友回復:
我相信您只是使用了錯誤的別名:
select distinct surveydataid
from surveydata sd
where not exists (
select *
from surveydata sd2
where sd2.surveydataid=sd.surveydataid
and sd2.choseninterests in (2,3)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/389905.html
上一篇:創建2個表JPA之間的關系
下一篇:兩列中UNION的結果
