具有

6kkfgxo0  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(195)

我有一张table叫赠品,每个赠品都可以有参赛者。我想知道没有赢家的赠品的数量。参赛者表中有一个名为winner的字段,该字段为1或0。
我的数据看起来像:
赠品桌

| id | name       |
|----|------------|
| 1  | Giveaway 1 |
| 2  | Giveaway 2 |

选手表

| id | giveaway_id|winner|
|----|------------|------|
| 1  | 1          | 0    |
| 2  | 1          | 0    |
| 3  | 2          | 0    |

我的问题是:

SELECT (SELECT COUNT(id) FROM contestants c 
        WHERE c.giveaway_id = g.id AND winner = 1) as winners
FROM giveaways g
having winners =  0

现在这将返回多行,我想得到行数。我尝试在winners子查询周围 Package count(),但没有成功。
在上述示例中,将返回:

Results
| winners |
|---------|
| 0       |
| 0       |

我只想数到2行。
更好的方法是什么?谢谢

yb3bgrhw

yb3bgrhw1#

我想知道没有赢家的赠品的数量。
使用 NOT EXISTS 使用相关子查询:

SELECT
    COUNT(*)
FROM
    giveaways g
WHERE NOT EXISTS (
    SELECT 1 FROM contestants WHERE giveaway_id = g.id AND winner = 1
)

子查询确保每个赠品都没有获胜的参赛者。

相关问题