MySQL - 条件查询,结果语句

时间:2011-01-16 11:42:12

标签: mysql if-statement case

我想构建一个这样的查询:

SELECT * FROM t1 WHERE visible ='yes'AND IF(sale ='yes',quantity> 0)

我的目标是只收到表中的行数量大于0的行才是“销售”产品。我尝试了IF和CASE语句但看起来这些结果只能是一个整数字符串,而不是一个语句。

我被困在这里......

3 个答案:

答案 0 :(得分:2)

如果你阅读他的原始文本“只收到数量超过0的表格中的行,只有当它是'销售'产品时”

因为问题的措辞有点差。假设是:

仅返回SALE ='yes'和QUANTITY>的项目0和VISIBLE ='是'。

如果这是用户想要的,那么SQL for就是:

SELECT * FROM t1 WHERE sale='yes' AND quantity > 0 AND visible='yes'

顺便说一句,如果您的数据库要保存大量数据,使用布尔值(true / false)而不是varchars在引擎中效率更高,并且可以节省选择和插入的时间。

答案 1 :(得分:1)

SELECT * FROM t1 WHERE visible='yes' AND ((sale = 'yes' AND quantity > 0) OR sale != 'yes')

答案 2 :(得分:1)

您缺少IF功能

中的第3个参数
SELECT *
FROM t1
WHERE visible='yes'
    AND IF (sale = 'yes', quantity > 0, 1) 

是有效的SQL