Mysql SELECT优先级

时间:2016-09-05 08:28:56

标签: mysql sql

我的数据库缺少一些值:

Name   Surname    Country   Salary

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

我想SELECT Name和Surname and Country,如果没有值, 我想按姓名和国家选择,如果没有值, 我想按姓氏和国家选择。

我现在正在使用:

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错误。

提前感谢一百万。

1 个答案:

答案 0 :(得分:5)

您可以使用limitSELECT 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,因此可以从double x = 0.57145732; x = (double)(Math.round((x * 100) * 10)) / 10; 子句中删除。