mysql查询2表与循环值

时间:2016-08-01 17:04:40

标签: mysql

表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'中循环。你能帮帮我们吗?

2 个答案:

答案 0 :(得分:0)

选择不同的代码,Value1,date1,value2,date2 从表1作为t1
在t1.code = t2.code;

上将Table2连接为t2

答案 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 joincode上的这两个枚举表之间生成row number将生成预期的结果集。