作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
给定一个表格
id x y
-- --- ---
5 200 1
5 3000 2
5 224 3
6 135 1
6 2222 2
6 16 3
我可以用
得到所有 y = 1 的 x 值SELECT x as y1
WHERE y = 1
我可以用
得到 y = 2 的所有 x 值SELECT x as y2
WHERE y = 2
但我想在一个查询中选择这些,这样我会得到类似
的结果id y1 y2
-- --- ---
5 200 3000
6 135 2222
这可以在一个查询中完成吗?
我已经尝试了几乎所有我能想到的变体,但都是错误。
最佳答案
MySQL 没有像 SQL Server
一样的 PIVOT
函数。但是您仍然可以使用 MAX()
和 CASE()
来模拟它,以连续测试它的值。
SELECT ID,
MAX(CASE WHEN y = 1 THEN x END) y1,
MAX(CASE WHEN y = 2 THEN x END) y2
FROM TableName
GROUP BY ID
输出
╔════╦═════╦══════╗
║ ID ║ Y1 ║ Y2 ║
╠════╬═════╬══════╣
║ 5 ║ 200 ║ 3000 ║
║ 6 ║ 135 ║ 2222 ║
╚════╩═════╩══════╝
关于mysql - 这可以在一个查询中吗 : SELECT x as y1 WHERE y = 1 and SELECT x as y2 WHERE y = 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16030136/
我是一名优秀的程序员,十分优秀!