7
有沒有更好的方法來做到這一點?從SELECT中返回嵌套在SELECT中的多列MySQL
SELECT subs. * ,
CASE subs.member_type
WHEN 'member' THEN
(SELECT CONCAT_WS(' ', members.first_name, members.last_name)
FROM members
WHERE members.id = subs.member_id)
ELSE
(SELECT members_anon.username
FROM members_anon
WHERE members_anon.id = subs.member_id)
END AS fullname,
CASE subs.member_type
WHEN 'member' THEN
(SELECT members.email
FROM members
WHERE members.id = subs.member_id)
ELSE
(SELECT members_anon.email
FROM members_anon
WHERE members_anon.id = subs.member_id)
END AS email
FROM subs
WHERE subs.item_id =19
AND subs.item_type = 'blog'
LIMIT 0 , 30
理想情況下,我想只有一個CASE
從相關表中返回的姓名和電子郵件部分。
謝謝您的回答,它工作得很好。我不確定我是否完全明白 - 是否只有在各自括號內的比較評估爲「真」時纔會進行「LEFT OUTER」連接? – 2010-08-29 23:26:02
啊哈!我想我現在明白了。這種情況'SELECT'選擇部分,所以如果'subs.member_type ='member''那麼SELECT位將是:'subs。*,m.username,m.email'。因此,ma上的'LEFT OUTER'將被執行,但不包含在結果集中。對?我想這不會對性能造成任何影響,因爲所有'* .id'列都是'primary_keys'? – 2010-08-29 23:34:18