我有一个由这些列组成的 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/