gpt4 book ai didi

MySQL - 同一列的不同 WHERE 子句

转载 作者:行者123 更新时间:2023-11-29 04:01:54 25 4
gpt4 key购买 nike

我有一种情况需要根据内容创建列。

例如,这里是 SQLFiddle - http://sqlfiddle.com/#!2/0ec7a/1 .

我需要得到这样的结果:

--------------------------
| CITY | MALES | FEMALES |
--------------------------
| NY | 5 | 2 |
--------------------------
| DC | 2 | 1 |
--------------------------

我该怎么做?

我正在查看 MySQL 手册中的 CASE WHEN 语句和 IF 语句,但更清晰的解释将非常有用。

最佳答案

你甚至不需要CASE!

SELECT
city,
sum(gender = 'm') as males,
sum(gender = 'f') as females
FROM Population
group by city

查看此 working in SQLFiddle .

这样做的原因是在 mysql 中,true1false0,所以求和一个条件计算它为真的次数!

对于(大多数?)其他数据库,您必须在总和中使用无聊的大小写:sum(case when gender = 'm' then 1 else 0 end) etc

这种类型的数据布局称为 "pivot" .一些数据库,如 Oracle,通过对其 SQL 风格的特定扩展在本地支持它,但在 mysql 中你必须“自己动手”。

关于MySQL - 同一列的不同 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504808/

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