以下是我正在使用的示例表
表1
╔════╦══════════════╦══════╗
║ KID║ REV ║ REDO ║
╠════╬══════════════╬══════╣
║ 1 ║ 43453453345 ║ 2 ║
║ 1 ║ 2433423423 ║ 1 ║
║ 2 ║ 23423423 ║ 1 ║
║ 2 ║ 5566533 ║ 2 ║
╚════╩══════════════╩══════╝
我需要使用 KID 和 REDO 从表1 中选择 REV 并输入表格2 以便我得到如下结果。
表2
╔════╦══════════════╦════════════╗
║ KID║ REDO1 ║ REDO2 ║
╠════╬══════════════╬════════════║
║ 1 ║ 43453453345 ║2433423423 ║
║ 2 ║ 23423423 ║ 5566533 ║
╚════╩══════════════╩════════════╝
即所有 REV REDO = 1必须属于 REDO1 和 REV & #39; REDO = 2必须属于 REDO2 ,所有 KID 都不是唯一的。 如何使用普通的mysql实现这一点?请帮帮我
答案 0 :(得分:2)
您可以使用以下查询生成所需的结果集:
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
以上使用条件聚合,以便将REV
值与REDO = 1
值相关联的所有REDO1
值放在REV
输出字段下,并将{{ 1}}与REDO = 2
输出字段
REDO2
值相关联的值
如果要将上述结果插入Table2
,可以使用INSERT INTO SELECT
声明:
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;