mysql - 使用 IF 控制流函数根据行的内容返回行

标签 mysql

好的,我有这个代码:

SELECT 
    COUNT(a.auction_id) AS amount, a.owner_id
FROM 
    auctions AS a
    INNER JOIN users AS u ON a.owner_id=u.user_id
    LEFT JOIN winners AS w ON a.auction_id=w.auction_id
WHERE 
    FROM_UNIXTIME(a.start_time) BETWEEN '2013-07-01 00:00:00' AND '2013-07-31 23:59:59' 
AND 
    a.owner_id IN (100012,100027,100030,100063,100065)
AND 
    a.active=1 
AND 
    a.approved=1 
AND 
    a.is_relisted_item=0 
AND 
    a.is_draft=0    
GROUP BY 
    a.owner_id
HAVING 
    amount > 4;

我想做的是类似下面的东西,但我只是不知道如何写..

如果a.list_in = 'store' AND a.close=1,那么它必须出现在获奖者表中才能包含在结果集中。因此,基本上,winners 表中的 w.winner_id 不应该为 NULL,这样才能将其包含为结果。

所以基本上,如果 a.list_in = 'store' 就可以,应该包含在内,但是如果 a.list_in = 'store' AND a.lined=1 那么要包含它,w.winner_id 不能为 NULL。

我该怎么做?

最佳答案

    SELECT 
    COUNT(a.auction_id) AS amount, a.owner_id
FROM 
    auctions AS a
    INNER JOIN users AS u ON a.owner_id=u.user_id
    LEFT JOIN winners AS w ON a.auction_id=w.auction_id
WHERE 
    FROM_UNIXTIME(a.start_time) BETWEEN '2013-07-01 00:00:00' AND '2013-07-31 23:59:59' 
AND 
    a.owner_id IN (100012,100027,100030,100063,100065)
AND 
    a.active=1 
AND 
    a.approved=1 
AND 
    a.is_relisted_item=0 
AND 
    a.is_draft=0 
AND (NOT(a.list_in = 'store' AND a.closed=1 ) OR (w.auction_id IS NOT NULL))   
GROUP BY 
    a.owner_id
HAVING 
    amount > 4;

这应该有效

在where中添加了一个额外的条件

AND (NOT(a.list_in = 'store' AND a.closed=1 ) OR (w.auction_id IS NOT NULL))   

关于mysql - 使用 IF 控制流函数根据行的内容返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17989779/

相关文章:

php - 如何在 PHP 的关联数组中将行创建为列名

c# - 查询以根据此多个条件从表中选择值列表

javascript - 通过 Express、Axios 在 MySQL PUT 和 DELETE 上出现错误 500

mysql - 如何获取结果集中每种类型记录的计数

php - 使用 PHP、MySQL、Jquery 和 Ajax 创建 5 星评级系统

php - 使用 autocomplete.js 中的值的 id 填充隐藏的输入

mysql - mysql中的物化 View

MySQL脚本用于删除 block 中的数据,直到低于id的所有内容都被删除

php - 如何将 postgresql 数据库与 mysql 数据库中的数据同步?

javascript - 我是否正确使用了 Promise?