我有一個名爲questions
的表,其中包含userid
和questionid
列,所以表中的一行表示具有該表的用戶已回答了一個特定問題。我想編寫一個查詢來爲表中的每個用戶返回一個未答覆的問題。如何整理這個SQL查詢?
一個例子是:
userid | questionid
-------------------
1 | 3
1 | 4
2 | 1
2 | 4
3 | 2
而且我想返回
userid | questionid
-------------------
1 | 1
2 | 2
3 | 1
從原來的表,你可以推斷出可用的問題是1,2,3和4用戶1只回答問題3和4,所以我想推薦回答問題1,用戶2回答問題1,所以我想推薦他們回答問題2,等等。
我有以下幾點:
SELECT q1.userid,
(SELECT MIN(q2.questionid)
FROM questions q2
WHERE questionid NOT IN
(SELECT q3.questionid
FROM questions q3
WHERE q3.userid = q1.userid))
FROM questions q1
但這令我爲相當混亂/低效。有沒有更好的方法來解決這個問題?
未解答的問題是什麼樣的?它是否與用戶ID一致,並且沒有問題?或者相反呢?或者是其他東西? – Hana
未解答的問題將不會有行 - 表中只包含回答的問題。 – bigsim
你說'爲每個用戶返回一個未答覆的問題。'你的意思是用戶沒有回答的問題,還是沒有人回答的問題? – Bango