我想构建一个这样的查询:
SELECT * FROM t1 WHERE visible ='yes'AND IF(sale ='yes',quantity> 0)
我的目标是只收到表中的行数量大于0的行才是“销售”产品。我尝试了IF和CASE语句但看起来这些结果只能是一个整数字符串,而不是一个语句。
我被困在这里......
答案 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
功能
SELECT *
FROM t1
WHERE visible='yes'
AND IF (sale = 'yes', quantity > 0, 1)
是有效的SQL