大家好我正在尝试从两个表中选择字段并根据条件显示两个字段之一,基本上我需要:
wp_cimy_uef_data.VALUE WHERE wp_cimy_uef_data.FIELD_ID = 3
wp_cimy_uef_data.VALUE WHERE wp_cimy_uef_data.FIELD_ID = 4
wp_users.user_email
我知道我必须加入表格,我认为我已经做到了这一点,但我不知道如何根据我到目前为止的WHERE选择两次VALUE字段:
SELECT wp_cimy_uef_data.VALUE, wp_users.user_email, FROM wp_users JOIN wp_cimy_uef_data ON wp_users.ID = wp_cimy_uef_data.USER_ID
我可能会像
那样SELECT (wp_cimy_uef_data.VALUE WHERE wp_cimy_uef_data.FIELD_ID = 3), (wp_cimy_uef_data.VALUE WHERE wp_cimy_uef_data.FIELD_ID = 4)
但显然这是错误的。
答案 0 :(得分:1)
您可以使用case
SELECT
case when d.FIELD_ID = 3 then d.VALUE end val1,
case when d.FIELD_ID = 4 then d.VALUE end val2,
u.user_email
FROM wp_users u
JOIN wp_cimy_uef_data d ON u.ID = d.USER_ID
使用max
选择非空值
SELECT
max(case when d.FIELD_ID = 3 then d.VALUE end) val1,
max(case when d.FIELD_ID = 4 then d.VALUE end) val2,
u.user_email
FROM wp_users u
JOIN wp_cimy_uef_data d ON u.ID = d.USER_ID
GROUP BY u.user_email /* or put group by u.ID*/
答案 1 :(得分:1)
如果我理解正确,你可以通过两个连接做你想要的事情:
SELECT d3.VALUE, d4.value, u.user_email
FROM wp_users u JOIN
wp_cimy_uef_data d3
ON u.ID = d3.USER_ID and d3.field_id = 3 JOIN
wp_cimy_uef_data d4
ON u.ID = d4.USER_ID and d4.field_id = 4;
请注意使用表别名来区分表的两个版本。