2016-09-05 63 views
1

我的數據庫缺少一些值:mysql的SELECT優先

Name Surname Country Salary 

John Walker  USA  800 
     Walker  Canada 1000 
Peter Walker  Canada 800 
John Walker    900 
Peter Farmer  USA  1200 
... ...  ... 

我想選擇姓名和國籍,如果沒有價值, 我想通過姓名和鄉村進行選擇,如果沒有值, 我想按姓氏和國家選擇。

我現在使用:

SELECT Salary FROM table_name 
WHERE (Name='InputFromPHP' AND Surname='InputFromPHP' AND Country='InputFromPHP') 
OR (Name='InputFromPHP' AND Surname='InputFromPHP') 
OR (Name='InputFromPHP' AND Country='InputFromPHP') 

我想給優先級,所以它會選擇什麼是輸入使用PHP,但是當在數據庫中的幾個值,它提供了SQL錯誤。

非常感謝。

+0

選擇工資**來自表名**? –

+0

是的,我擁有它我只是沒有輸入它,現在我正在糾正,對不起:) – Lukas

+0

你也可能想'AND'包裝''''像'Where(Name ='something'AND Surname =' otherthing')OR(Name ='something'AND Surname ='otherthing')' –

回答

5

你可以使用order bylimit

SELECT Salary 
FROM  table_name 
WHERE Name='InputFromPHP' 
    AND (Surname='InputFromPHP' OR Country='InputFromPHP') 
ORDER BY CASE Surname WHEN 'InputFromPHP' THEN 0 ELSE 1 END, 
     CASE Country WHEN 'InputFromPHP' THEN 0 ELSE 1 END 
LIMIT 1 

請注意,您where條款總是需要Name='InputFromPHP',以便可以取出or條款。

+0

謝謝,它看起來像在工作。 :)) 親切的問候 – Lukas