Mysql SELECT优先级

Luk*_*kas 2 mysql sql

我的数据库缺少一些值:

Name   Surname    Country   Salary

John   Walker     USA       800
       Walker     Canada    1000
Peter  Walker     Canada    800
John   Walker               900
Peter  Farmer     USA       1200
...    ...        ...
Run Code Online (Sandbox Code Playgroud)

我想SELECT Name和Surname and Country,如果没有值,我想按名称和国家选择SELECT,如果没有值,我想按Surname和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')
Run Code Online (Sandbox Code Playgroud)

我想优先考虑,所以它会精确选择什么是输入PHP,但是当数据库中有多个值时,它会产生SQL错误.

提前一百万谢谢.

tri*_*cot 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  
Run Code Online (Sandbox Code Playgroud)

请注意,您的where子句始终是必需的Name='InputFromPHP',因此可以从该or子句中取出.