Mysql子查询正确选择列

时间:2018-06-11 10:41:16

标签: mysql mysqli

我的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子句

的方式进行SELECT
WHERE user_id IN(123,456,789, etc)

1 个答案:

答案 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