MySQL-条件查询,语句上的结果

MySQL-条件查询,语句上的结果,mysql,if-statement,case,Mysql,If Statement,Case,我想构造一个如下的查询: 从t1中选择*可见='yes',如果(销售='yes',数量>0) 我的目标是,仅当它是“销售”产品时,才从表中接收数量大于0的行。我尝试了IF和CASE语句,但这些语句的结果似乎只能由一个整数字符串表示,而不是一个语句 我被困在这里…您在IF函数中缺少第三个参数 SELECT * FROM t1 WHERE visible='yes' AND ((sale = 'yes' AND quantity > 0) OR sale != 'yes') SELECT *

我想构造一个如下的查询:

从t1中选择*可见='yes',如果(销售='yes',数量>0)

我的目标是,仅当它是“销售”产品时,才从表中接收数量大于0的行。我尝试了IF和CASE语句,但这些语句的结果似乎只能由一个整数字符串表示,而不是一个语句


我被困在这里…

您在
IF
函数中缺少第三个参数

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

SQL是否有效

如果函数中缺少第三个参数

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

如果您阅读了他的原始文本“仅当该表是“销售”产品时,仅接收数量大于0的表中的行”,则SQL是否有效

因为这个问题措辞有点不恰当。假设是:

仅返回SALE='yes'和QUANTITY>0且可见='yes'的项目

如果这是用户想要的,则SQL for简单地是:

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

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

如果您阅读他的原始文本“仅当它是“销售”产品时,才从数量大于0的表中接收行”

因为这个问题措辞有点不恰当。假设是:

仅返回SALE='yes'和QUANTITY>0且可见='yes'的项目

如果这是用户想要的,则SQL for简单地是:

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

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

对于这一点,我想了很多,非常复杂,谢谢您帮我解决!我想了很多关于这一点的复杂,谢谢你帮我理顺它!谢谢,我知道,这只相对较小。谢谢,我知道,这只相对较小。