Mysql 使用IF control flow函数根据行的内容返回行
好的,我有这个代码:Mysql 使用IF control flow函数根据行的内容返回行,mysql,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
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\u in='store'和a.closed=1
,则它必须出现在winners表中才能包含在结果集中。因此,基本上,w.winner\u id
在winners
表中不应为空,因此它将被包括在内
所以基本上,如果a.list\u in='store'
这很好,应该包括在内,但是如果a.list\u in='store'和a.closed=1
那么要包括它w.winner\u id
就不能为空
我该怎么做
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))
怎么样。。。和(a.closed=0或w.winner\u id不为NULL).
?您是否尝试过w.winner\u id不为NULL的?还是我没抓住要点?@Vatev这行不通,因为如果a.list\u in!='存储“
,则除非它在winners表中,否则不会被包括在内。只有a.list\u in='store'
需要在winners表中,如果它已关闭。@NickydeMayer,只有在winners表中包含结果时才会包含结果;如果winners表是a.list\u in='store'和a.closed=1
,则只需在winners表中找到它们。对不起,我认为不编写整个查询就足够明显了。我要再试一次:。。。(不在赢家中的条件或(无论需要什么,赢家和w.winner的id不为空)…