我的SQL代码低于哪个结果
SELECT user_id, proj_id, done
FROM `project`
WHERE theme = 1
AND user_id = 123
AND done =1
//结果
user_id proj_id done
123 17 1
123 18 1
123 20 1
我怎么能以这样的方式选择?
user_id | proj_id_17 | proj_id_18 | proj_id_19
123 1 1 0
我知道DISTINCT可以选择唯一值,但我的问题是选择colum
SELECT user_id
, (SELECT proj_id=17 WHERE done=1)
FROM project
WHERE theme = 1
AND user_id = 123
AND done = 1
如果我以某种方式选择它会说
子查询返回超过1行
如果我选择多个id,如user_id IN(123,456,789)
我必须选择数百个id,所以我必须以WHERE子句
的方式进行SELECTWHERE user_id IN(123,456,789, etc)
答案 0 :(得分:1)
我已设法正确获得结果,这是sql
SELECT user_id,
MAX((CASE WHEN proj_id = 17 AND done = 1 THEN 1 ELSE 0 END)) AS proj_17,
... until 23 etc
FROM project
WHERE theme = 1
AND user_id
IN(123, 456, 789,...)
GROUP BY user_id
我得到的结果就像
uid | proj_17 | proj_18 | ... etc
123 1 0
345 1 1
678 0 1
这是我想要的,所以感谢那些回复的人:)
@Strawberry,@ M Khalid Junaid