MySQL选择查询条件

3

我有一个 MySQL 数据库中的两个列 A 和 B。 在一个 select 查询中,我想要实现以下逻辑:

选择 A 为 'X' 的行。 如果某一行没有设置 A,则只有当列 B = 'Y' 时才检查并选择该行。

因此,可以说列 B 是列 A 的备选项。

我该如何构建一个 SELECT 查询,将 'X' 和 'Y' 作为 WHERE 子句的输入?

3个回答

7

使用布尔逻辑:

SELECT *
FROM table
WHERE A = 'X' OR (A IS NULL AND B = 'Y')

我对这个解决方案有一个问题。这个查询将返回A和B(因为使用了“SELECT *”),而且其中可能会有一个为空。是否有一种方法,在A为空的情况下不返回它? - frabala
@frabala 如果你有问题,应该使用页面顶部的“提问”链接进行提问,这样会比在去年的旧回答下留言获得更多的回复。 :) - Yamikuronue

2
我认为这应该可以工作:
SELECT * FROM table
WHERE (A='X') OR ((A IS NULL) AND (B='Y'))

2

SELECT * FROM table WHERE A='X' OR (A IS NULL AND B='Y')

从表中选择所有数据,其中A等于'X'或者(A为空且B等于'Y')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接