我有類似以下表格:加入,而不是子查詢
id user_id task task_closed
1 1 1 0
2 1 2 1
3 1 3 0
4 2 3 0
5 2 4 1
6 3 4 0
我需要的是一個查詢,對於一個給定的任務將返回所有具有此任務,用途爲他們每個人的數量他們有完整的未完成任務。
所以,如果我們談論的任務3 我想
user_id pending
1 2
2 1
在
SELECT tasks.user_id,
(SELECT COUNT(*)
FROM tasks t2
WHERE t2.user_id=tasks.user_id AND t2.task_closed=0
)
FROM tasks
WHERE tasks.id=?
我也要重新寫爲
SELECT user_id,COUNT(*)
FROM tasks
WHERE task=? AND task_closed=0
GROUP_BY user_id
WHERE user_id IN (SELECT t2.user_id from tasks t2 WHERE task=?);
但我有一種強烈的感覺,應該有一種更有效的方式來做到這一點,以某種方式加入其中小精靈。
有關我應該怎麼做的任何想法?
任務確實是hlods任務ID的列。 – epeleg
正如我懷疑:你是否嘗試過查詢? – Stephan
是的,它的工作。但不知何故,我仍然錯過了在一般情況下如何做我想做的事情:(例如 - 假設我現在想要將此查詢的結果與其他表結合起來(例如,獲取一些基於user_id的數據)多次出現 - 就像用戶喜歡的食物一樣 - 我希望能得到多行數據,每個喜歡的食物都有當前結果的重複數據)我會在這裏接受你的答案,但是如果你能提供更多的見解,我會很棒。 – epeleg