我的数据库缺少一些值:
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错误.
提前一百万谢谢.
你可以使用order by和limit:
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子句中取出.