[英]Left Joining same table but with different values?
Table_A具有entity_id
Table_B具有相關的entity_id ,其attribute_id = 1
Table_B具有相關的entity_id ,其attribute_id = 2
SELECT Table_B.value
FROM Table_A
LEFT JOIN Table_B
ON Table_A.entity_id = Table_B.entity_id
WHERE Table_A.date = '2012-7-30 00:00:00'
AND Table_B.attribute_id = 1
我想將attribute_id = 1和attribute_id = 2放入一個查詢中。
您可以第二次加入Table_B並使用AS為其指定一個新名稱(別名)。
SELECT Table_B.value, Table_B2.value
FROM Table_A
LEFT JOIN Table_B
ON Table_A.entity_id = Table_B.entity_id
LEFT JOIN Table_B AS Table_B2
ON Table_A.entity_id = Table_B2.entity_id
WHERE Table_A.date = '2012-7-30 00:00:00'
AND Table_B.attribute_id = 1
AND Table_B2.attribute_id = 2
您還可以移動屬性條件,使其更清晰:
SELECT Table_B.value, Table_B2.value
FROM Table_A
LEFT JOIN Table_B
ON Table_A.entity_id = Table_B.entity_id AND Table_B.attribute_id = 1
LEFT JOIN Table_B AS Table_B2
ON Table_A.entity_id = Table_B2.entity_id AND Table_B2.attribute_id = 2
WHERE Table_A.date = '2012-7-30 00:00:00'
那么你可以通過兩種簡單的方法來做到這一點
select
t1.entity_id,
t2.attribute
from t1
left join t2 on t2.entity_id = t1.entity_id;
要么
select
t1.entity_id,
group_concat(t2.attribute) as Attr
from t1
left join t2 on t2.entity_id = t1.entity_id
group by t1.entity_id
如果你想同時獲得attribute_id = 1和2,為什么不使用OR作為條件?
SELECT Table_B.value
FROM Table_A
LEFT JOIN Table_B
ON Table_A.entity_id = Table_B.entity_id
WHERE Table_A.date = '2012-7-30 00:00:00'
AND (Table_B.attribute_id = 1 OR Table_B.attribute_id = 2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.