首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从同一表中选择两列的mysql查询

从同一表中选择两列的mysql查询
EN

Stack Overflow用户
提问于 2015-06-18 09:54:05
回答 1查看 349关注 0票数 0

下面是我正在处理的样本表

表1

代码语言:javascript
复制
╔════╦══════════════╦══════╗
║ KID║  REV         ║ REDO ║
╠════╬══════════════╬══════╣
║  1 ║ 43453453345  ║  2   ║
║  1 ║ 2433423423   ║  1   ║
║  2 ║ 23423423     ║  1   ║
║  2 ║ 5566533      ║  2   ║
╚════╩══════════════╩══════╝

我需要选择REV表1中使用codeREDO,然后放入表2E 212,这样我就可以得到如下结果。

表2

代码语言:javascript
复制
╔════╦══════════════╦════════════╗ 
║ KID║  REDO1       ║  REDO2     ║
╠════╬══════════════╬════════════║ 
║  1 ║ 43453453345  ║2433423423  ║
║  2 ║ 23423423     ║   5566533  ║ 
╚════╩══════════════╩════════════╝

所有REV's和REDO=1都必须属于REDO1,REV与重做e 225=2必须在E 126REDO2E 227>下,所有E 128 come E 229都不是唯一的。如何用简单的mysql实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-18 10:02:03

可以使用以下查询生成所需的结果集:

代码语言:javascript
复制
SELECT KID, 
       MAX(CASE WHEN REDO = 1 THEN REV) AS REDO1, 
       MAX(CASE WHEN REDO = 2 THEN REV) AS REDO2
FROM Table1
GROUP BY KID

上述方法使用条件聚合,以便将与REDO = 1值关联的所有REDO = 1值放在REDO1输出字段下,并将与REDO = 2值关联的所有REV值放置在REDO2输出字段下。

如果要将上述结果插入Table2,可以使用INSERT INTO SELECT语句:

代码语言:javascript
复制
INSERT INTO Table2
SELECT KID, MAX(CASE WHEN REDO = 1 THEN REV END),
       MAX(CASE WHEN REDO = 2 THEN REV END) 
FROM Table1
GROUP BY KID;

Demo here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30912124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档