mysql select 同一列出现两次,但where子句不同

标签 mysql select pivot-table

我有一个由这些列组成的 mysql 表:

user_id,开始,结束,分区

每个用户id在每个区都有一个开始值和结束值,像这样:

+-----------------------------------+
| user_id | start | end  | district |
|       1 |  1000 | 2000 |    north |
|       1 |  1200 | 2200 |    south |
|       2 |   900 | 1900 |    north |
|       2 |   950 | 1700 |    south |
+-----------------------------------+

我正在寻找一个选择,每个 user_id 有一个结果行,其中列出了两个地区中每个地区的开始和结束。有点像

select user_id,
(start as no_st, end as no_en where district='north'),
(start as so_st, end as so_en where district='south');

给予:

+-----------------------------------------+
| user_id | no_st | no_en | so_st | so_en |
|       1 |  1000 |  2000 |  1200 |  2200 |
|       2 |   900 |  1900 |   950 |  1700 |
+-----------------------------------------+

这有魔法查询吗?

谢谢, 巴特...

最佳答案

这是数据透视查询的一种解决方案:

SELECT user_id, 
  MAX(IF(district='north', start, null)) AS no_st,
  MAX(IF(district='north', end, null)) AS no_en,
  MAX(IF(district='south', start, null)) AS so_st,
  MAX(IF(district='south', end, null)) AS so_en
FROM `NoOneEverNamesTheirTableInSQLQuestions`
GROUP BY user_id;

关于mysql select 同一列出现两次,但where子句不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17601382/

相关文章:

带有 WHERE 子句的 MySQL SELECT 不包括数量为 '0' 的结果

mysql - CF8 - 循环求和

select - ncurses和stdin阻止

python-3.x - Pandas 从多索引级别获取所有值

Excel--SUMPRODUCTIF?变通?

python - 如何旋转 pandas 数据框?

php - 来自数据库的 Laravel 显示名称

mysql - 如何处理MySQL读写分离中的最终一致性问题

sql - 在 MySQL 中选择查询

mysql - 选择一个mysql表的所有内容,并回显对应类别的列表