表1:
code | value1 | date1
515 | MD001 | 2016-07-01
515 | MD002 | 2016-07-03
612 | UD005 | 2016-08-01
612 | UD006 | 2016-08-03
612 | UD007 | 2016-08-06
表2:
code | value2 | date2
515 | FC003 | 2016-07-02
515 | FC004 | 2016-07-04
612 | QQ008 | 2016-08-02
612 | QQ009 | 2016-08-04
所需的查询输出是:
Code | Value1 | date1 | value2 | date2
515 | MD001 | 2016-07-01 | FC003 | 2016-07-02
515 | MD002 | 2016-07-03 | FC004 | 2016-07-04
612 | UD005 | 2016-08-01 | QQ008 | 2016-08-02
612 | UD006 | 2016-08-03 | QQ009 | 2016-08-04
612 | UD007 | 2016-08-06 | |
我尝试查询但结果总是在' value2'中循环。你能帮帮我们吗?
答案 0 :(得分:0)
选择不同的代码,Value1,date1,value2,date2
从表1作为t1
在t1.code = t2.code;
答案 1 :(得分:0)
SELECT
firstTable.code,
firstTable.value1,
firstTable.date1,
secondTable.value2,
secondTable.date2
FROM
(
SELECT
T1.*,
@rn1 := @rn1 + 1 AS row_number
FROM Table1 AS T1
CROSS JOIN (SELECT @rn1 := 0) AS var
) AS firstTable
LEFT JOIN
(
SELECT
T2.*,
@rn2 := @rn2 + 1 AS row_number
FROM Table2 AS T2
CROSS JOIN (SELECT @rn2 := 0) AS var
) AS secondTable
ON firstTable.code = secondTable.code AND firstTable.row_number = secondTable.row_number;
注意:在这种情况下,简单的内连接是不够的。
这就是为什么枚举每个表中的行并为每个记录分配行号将是第一个任务。
稍后在inner join
和code
上的这两个枚举表之间生成row number
将生成预期的结果集。