2014-09-26 17 views
0

我正在嘗試寫一個MySQL select查詢來獲取所有有我company_id的產品。如果沒有找到結果,找到所有有company_id = 0的產品。MySQL查詢找到ID = X的值,如果X不存在,則回退到ID = 0

我可以通過使用IF/ELSE的PHP來做到這一點,但是從閱讀關於MySQL IF/ELSE,它看起來應該可以在一個查詢中。

該查詢顯然是行不通的,因爲它會與我的company_id和COMPANY_ID = 0返回的一切:

SELECT * FROM products 
WHERE company_id = 100 OR company_id = 0 

我一直在嘗試使用子查詢寫:

SELECT * FROM products 
WHERE IF EXISTS (SELECT * FROM products WHERE company_id = 100) 
ELSE EXISTS (SELECT * FROM products WHERE company_id = 0) 

但作爲你可以看到,我是MySQL IF/ELSE的新手,這不起作用。

任何人都可以幫助我在正確的方向推動這個工作嗎?

非常感謝

(我必須使用MySQL v5.1.73)

+0

可能是你可以在這裏找到你的解決方案http://www.mysqltutorial.org/mysql-stored-function/ – 2014-09-26 09:29:22

回答

3

一種方法是做一個簡單的子查詢來獲取正確的company_id,然後選擇正確的產品;

SELECT * FROM products 
WHERE company_id = (
    SELECT MAX(company_id) FROM products WHERE company_id IN (100,0) 
); 

這將找到公司ID 100,如果它存在,否則0.它然後只是選擇產品。

+0

這很好,謝謝 - 正是我期待做的 – SammyBlackBaron 2014-09-26 09:29:50

0

我認爲你正試圖使其更難那麼它是。我只是這樣做:

SELECT * FROM products 
WHERE company_id = 100 OR company_id = 0 
ORDER BY company_id DESC 

如果有與id = 100結果,只顯示那些在PHP。你仍然在做一個查詢,所以沒有額外的數據庫往返。在某些情況下,你可能會返回更多的字節,但是誰在乎。很明顯,這很簡單,只有當它明顯出現問題時,我纔看到沒有理由懷疑問題。

相關問題