2013-10-31 92 views
0

我有以下查詢:選擇查詢與每行測試SQL

SELECT favorite_id,MO,name,b.image_id,image_path FROM buddies b,images i where [email protected] and b.image_id=i.image_id 

在哥們領域b.image_id應該從表圖像獲取IMAGE_PATH b之前測試......如果image_id是0我必須從表格註冊的image_id和從表格圖像獲取image_path,如果image_id不是0,我直接從表格圖像獲取image_id ...所以當從表格中選擇favorite_id和image_id時我需要爲每一行循環在這張桌子上的朋友,並測試image_id

任何人都可以幫助我嗎?

+0

你提到的登記表,但它不是查詢的一部分。您的描述非常混亂。我認爲最好展示表格及其結構。順便說一句,你有MySQL,然後sqlserver作爲你的標籤的一部分,哪一個是正確的? – Edper

回答

2
SELECT favorite_id,MO,name, 
b.image_id, 
image_path = case when b.image_id ='0' then i1.image_path else i.image_path end 

FROM buddies b, registration r 
left join images i on b.image_id=i.image_id 
left join images i1 on r.image_id=i1.image_id 
where [email protected] and [email protected] 
0
SELECT favorite_id,MO,name,b.image_id, 
     case b.image_id when 0 then i.image_path else b.image_path end as image_path 
    FROM buddies b,images i 
    where [email protected] and b.image_id=i.image_id 

水木清華這樣的...

如果需要其他條件選擇 - 那麼它在這裏:SELECT CASE WHEN THEN (SELECT)

+0

當0我需要寫另一個選擇...我該怎麼做? – User7291

+0

在MS SQL中,我通常進行其他連接(左連接),然後像上面那樣使用「case」。你想要這樣的東西:http://stackoverflow.com/questions/14885912/select-case-when-then-select? – Badiboy