2014-02-07 114 views
0

我有這個mysql查詢,它牽涉到與domain相關的域,並使用CASE來幫助使結果更整齊。問題是返回的這一行是錯誤的,因爲它返回666的domain_name而不是665:用case語句返回一行的mysql查詢不正確

SELECT case when domain_related.domain_id = '666' then domain_related.domain2_id else domain_related.domain_id end as domain_id, domain.domain_name 
FROM domain_related 
JOIN domain ON domain.domain_id=domain_related.domain2_id 
WHERE '666' in (domain_related.domain_id,domain_related.domain2_id) 

665 is actually sofadmiral.net 
666 is actually sofranger.it 

but the query results are like so: 

665 sofranger.it 
667 sofmarine.me 
668 soffighter.us 
669 sofpilot.com 
670 sofgeneral.com 

任何想法?

+0

您的'domain_id'是一個整數或字符串?如果是整數,爲什麼需要引號? – Raptor

+0

@crashintoty你可以添加你的表結構.. –

+0

'域'表是domain_id,domain_name。 'domain_related'表是domain_related_id,domain_id和domain2_id。 '域名相關'表格如下所示:1,655,666/2,655,667/3,665,668等等。 – crashintoty

回答

0

經過幾天的調整並沒有成功,我終於找到了另一種寫這個查詢的方法,並發現它在利用UNION命令/函數(見下文)。返回的結果是完美的。謝謝大家的幫助!

SELECT domain_id, domain_name 
FROM domain 
WHERE domain_id IN (
    SELECT domain_id as domain_id 
    FROM domain_related 
    WHERE domain2_id = 666 
    UNION 
    SELECT domain2_id as domain_id 
    FROM domain_related 
    WHERE domain_id = 666 
)