优先考虑 SQL WHERE 子句

Posted

技术标签:

【中文标题】优先考虑 SQL WHERE 子句【英文标题】:Prioritize SQL WHERE clause 【发布时间】:2012-11-29 13:40:44 【问题描述】:

基本上我想这样做:

SELECT * FROM `table` WHERE x = 'hello' OR x = 'bye' LIMIT 1';

我希望它返回 1 个值,但优先考虑第一个 where 子句的结果。因此,如果存在 x 列的值为“hello”的行,它将不会返回 'bye' 值的结果。如果 "hello" 值不存在,它将返回 'bye' 值的结果。

想不出办法,尽管它看起来相当微不足道。有什么想法吗?

【问题讨论】:

如何使用表格?它是mysql中的一个关键字.. 这只是一个例子。这不是文字表结构。 【参考方案1】:

一种方法是使用order by

SELECT *
FROM `table`
WHERE x = 'hello' OR x = 'bye'
order by (case when x = 'hello' then 1 else 2 end)
LIMIT 1'

“1”和“2”只是用于确定行优先级的任意数字。 'hello' 的值得到“1”,因此它们在其他值之前排序。

【讨论】:

注意你也可以这样写:ORDER BY x='hello' DESC

以上是关于优先考虑 SQL WHERE 子句的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 优先考虑 WHERE 条件

Where 子句基于优先级

mysql进阶5:分组查询

PreparedStatement 可以不考虑 WHERE 子句中的某些条件吗?

sql不允许在where子句比较中使用case变量[重复]

sql语句优化技巧