【发布时间】:2014-03-20 10:06:35
【问题描述】:
我正在寻找将行值合并到要合并的列相同的一行的方法
变换:
FK | F1
========
3 | ABC
3 | DEF
到
FK | F1 | F2
=================
3 | ABC | DEF
更新: 我最初不知道 F1 的值。它们可能是一切,但我知道它们对于给定的 FK 是独一无二的,并且它们是 varchars。
更新 2: 在您的帮助下,我来到了这个查询,该查询还将添加只有一个值的 FK。我想它可以改进。
选择 IFNULL(jointable.FK,table.FK) AS FK, IFNULL(jointable.F1,table.F1),joinable.F2
来自table
左连接
(选择 T1.FK、T1.F1、T2.F1 作为 F2
来自tableT1
左连接 table T2 ON T1.FK = T2.FK
哪里 T1.F1 T2.F1
按 T1.FK 分组
) 作为可连接的
开table.FK=jointable.FK
按 FK 分组;
【问题讨论】:
-
你的数据库是哪个? Oracle、SQL server、MySql 等
-
每个 ID 是否只有 2 行或更多?
-
Mysql是数据库。
-
我每个 FK 有 1 或 2 个 F1