[英]SQL - Info from multiple tables with two variants of the same field.
大家好,我正在嘗試從兩個表中選擇字段,並根據條件顯示兩次該字段之一,基本上我需要:
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)
但顯然那是錯誤的。
你可以用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
選擇非null值
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*/
如果我理解正確,則可以通過兩個聯接來執行所需的操作:
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;
請注意使用表別名來區分表的兩個版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.