这是我的桌子的样子:
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
答案 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!