2011-04-21 76 views
3

我有一个MySQL数据库中的两个数据库列,A和B. 在选择查询,我想实现这样的逻辑:Mysql的选择查询条件

选择其中A为“X”的行。 如果A未在一行中设置,则仅当列B ='Y'时检查并选择行。

因此可以说,列B是A列

我怎么能建设有“X”和“Y”作为输入SELECT查询的WHERE子句的后备?

回答

7

使用布尔逻辑:

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

我对这个解决方案的问题。这个查询将返回A和B(因为'SELECT *'),也许其中一个将为空。有没有办法不返回A的情况下,它是空的? – frabala 2013-01-03 17:19:31

+0

@frabala如果你有问题,你应该使用顶部的“问题问题”链接问,它会给你比去年的回答评论更多的回应:) – Yamikuronue 2013-01-03 17:56:20

+0

是的,你是对。 – frabala 2013-01-03 18:13:08

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')