我需要这个查询:
SELECT * FROM best WHERE best = 'value' AND lang = 'x'
UNION
SELECT * FROM best WHERE best = 'value' AND lang = 'custom'
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
基本上我只需要一个记录,其中best ='value' lang = 'x',如果找不到这条记录,那么我需要执行第二个查询lang = 'custom'
MySQL是否足够聪明,可以理解,考虑到存在LIMIT 1,当第一个union的查询返回时,他不需要执行第二个查询?
我只能做一个查询:
SELECT * FROM best WHERE best = 'value' AND lang IN ('x','custom') LIMIT 1
Run Code Online (Sandbox Code Playgroud)
但是通过这个查询我不能说更优先记录 lang = 'x'
您可以使用ORDER BY FIELD():
SELECT
*
FROM
best
WHERE
best = 'value'
AND lang IN ( 'x', 'custom' )
ORDER BY FIELD ( lang, 'x', 'custom' )
LIMIT
1
Run Code Online (Sandbox Code Playgroud)
这将照顾你的"优先"问题:)
| 归档时间: |
|
| 查看次数: |
3004 次 |
| 最近记录: |