gpt4 book ai didi

mysql - 计算多列

转载 作者:行者123 更新时间:2023-11-29 01:21:37 24 4
gpt4 key购买 nike

我有这张表:

Teams:
ID | Size1 | Size2 | Size3 | Size4 | ... (other columns)..
----------------------------------------
1 | L | XL | L | M | ...
----------------------------------------
2 | S | L | S | XXL | ...
----------------------------------------
3 | M | XXL | L | M | ...
----------------------------------------
4 | L | XL | XS | XXL | ...

计算表中所有 L 的最有效(也是最简单)的 MySQL 查询是什么?

我希望结果中只有一个字段,即所有列中所有 L 的计数。

编辑:只是为了澄清一点,在我的表格中,第一列有 152 个 L,第二列有 2 个,第三列有 151 个,第四列有 3 个,我预计结果为 308

最佳答案

您可以使用 SUMCASE 来做到这一点:

SELECT 
sum(case when Size1 = 'L' then 1 else 0 end) +
sum(case when Size2 = 'L' then 1 else 0 end) +
sum(case when Size3 = 'L' then 1 else 0 end) +
sum(case when Size4 = 'L' then 1 else 0 end)
FROM Teams;

或者,您可以使用 IF 而不是 CASE:

SELECT 
sum(IF(Size1 = 'L',1, 0)) +
sum(IF(Size2 = 'L',1, 0)) +
sum(IF(Size3 = 'L',1, 0)) +
sum(IF(Size4 = 'L',1, 0))
FROM Teams;

这个其实是一样的

编辑。

根据 Andomar 的评论,还有更简单的解决方案:

SELECT 
sum(Size1 = 'L') +
sum(Size2 = 'L') +
sum(Size3 = 'L') +
sum(Size4 = 'L')
FROM Teams;

这是正确的,因为 true 在 MySQL 中等于 1。我刚刚验证了这一点。 ;-)

第二次编辑

简化这个的下一步 - 只有一个 SUM 用法:

   SELECT sum(
(Size1 = 'L') +
(Size2 = 'L') +
(Size3 = 'L') +
(Size4 = 'L') )
FROM Teams;

关于mysql - 计算多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21552907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com