作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要这个查询:
SELECT * FROM best WHERE best = 'value' AND lang = 'x'
UNION
SELECT * FROM best WHERE best = 'value' AND lang = 'custom'
LIMIT 1
基本上我只需要一条记录,其中 best = 'value' 和 lang = 'x'
,如果找不到这条记录,那么我需要使用 lang = 执行第二个查询'自定义'
MySQL 是否足够聪明,能够理解考虑到存在 LIMIT 1,当 union 的第一个查询返回一些东西时,他不需要执行第二个查询?
我可以做一个查询:
SELECT * FROM best WHERE best = 'value' AND lang IN ('x','custom') LIMIT 1
但是对于这个查询,我不能说使用 lang = 'x'
最佳答案
你可以使用 ORDER BY FIELD() :
SELECT
*
FROM
best
WHERE
best = 'value'
AND lang IN ( 'x', 'custom' )
ORDER BY FIELD ( lang, 'x', 'custom' )
LIMIT
1
这将解决您的“优先”问题:)
关于MySQL:仅当第一个查询未返回结果时才执行第二个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8353974/
我是一名优秀的程序员,十分优秀!