sql从id时选择多个值

时间:2014-11-28 10:57:27

标签: mysql sql

这是我的桌子的样子:

fid  | section  | baseData
59   |    58    |  somedata
59   |    58    |  somedata
60   |    58    |  somedata

我需要获得这样的数据:

所有者,姓名,电子邮件

所有值都在表baseData中,但是owner是fid = 59,name是fid 70,email是fid 71

所以我想得到:

 owner       |  name       |  email
 owner_name  |  user_name  | user_email
 owner_name2 |  user_name2 | user_email2

我正在尝试这种方式:

SELECT fid, 
(CASE 
WHEN (fid = 59 AND section = 58)
THEN baseData
END) AS owner
FROM sobipro_field_data
WHERE section = 58 GROUP BY fid

但只获得空值

我想要的是:

When fid = 59 -> select baseData as owner
When fid = 70 -> select baseData as name
When fid = 71 -> select baseData as email

2 个答案:

答案 0 :(得分:2)

对于一个部分:

SELECT  
    max(CASE WHEN (fid = 59) THEN baseData ELSE null END) AS owner,  
    max(CASE WHEN (fid = 70) THEN baseData ELSE null END) AS name,  
    max(CASE WHEN (fid = 71) THEN baseData ELSE null END) AS email  
FROM sobipro_field_data  
WHERE section = 58;

每个部分:

SELECT section,
    max(CASE WHEN (fid = 59) THEN baseData ELSE null END) AS owner,  
    max(CASE WHEN (fid = 70) THEN baseData ELSE null END) AS name,  
    max(CASE WHEN (fid = 71) THEN baseData ELSE null END) AS email  
FROM sobipro_field_data  
group by section;

答案 1 :(得分:0)

SELECT  
(CASE WHEN (fid = 59 AND section = 58) THEN baseData END) AS owner,  
(CASE WHEN (fid = 70 AND section = 58) THEN baseData END) AS name,  
(CASE WHEN (fid = 71 AND section = 58) THEN baseData END) AS email  

FROM sobipro_field_data  

Cheers!