Goo*_*bot 5 mysql select mysql-5.5
在一个简单的查询中
SELECT *
FROM table
WHERE id='x' OR id='y'
Run Code Online (Sandbox Code Playgroud)
如何优先获得仅其中一个WHERE
条款?
我的意思是用id='x'
. 仅当没有行时,获取行id='y'
。
换句话说,id='y'
如果有一行则不要使用id='x'
。
SELECT *
FROM table
WHERE id IN ('x', 'y')
AND (id='x' OR NOT EXISTS(SELECT id FROM table WHERE id='x'))
Run Code Online (Sandbox Code Playgroud)
应该可以解决这个问题(警告:我是一个 MSSQL 人员,还没有在 mySQL 中尝试过,但我怀疑语法在那里也被接受得很好),尽管效率将取决于有多少行与第一个过滤子句匹配(对于与该部分匹配的每一行,id='x' OR id='y'
该EXISTS
部分中的子查询可能会运行,除非查询规划器足够聪明,可以看到它不依赖于外部查询中的任何内容,因此可以运行一次并重用结果 - 如果您只期望最多两个(我怀疑列名就是id
这种情况)这不应该是问题)
归档时间: |
|
查看次数: |
7910 次 |
最近记录: |