【问题标题】:SQL - Concatenation without primary keySQL - 没有主键的连接
【发布时间】:2019-06-06 07:06:45
【问题描述】:

我有两个不共享主键的表(A 和 B)。我需要某种连接,其中对于表 A 中的每一行 如果 date_B ,我必须添加表 B 行。

*日期格式:yyyy-mm-dd

表 A

+-------+-----+-----------+
| id_A  | op_A|   date_A  |
+-------+-----+-----------+
| 1     |  0  | 2018-10-01|
| 2     |  0  | 2018-12-31| 
+-------+-----+-----------+

表 B

+-----+--------+-------------+
| id_b| other  |  date_B     |
+-----+--------+-------------+
| a   |  8     | 2018-09-01  |
| b   |  90    | 2018-12-01  | 
+-----+--------+-------------+

正确结果:

+-----+-----+-----------+-----+--------+-------------+
| id_A| op_A|   date_A  | id_B| other  |  date_B     |
+-----+-----+-----------+-----+--------+-------------+
| 1   |  0  | 2018-10-01| a   |  8     | 2018-09-01  |
| 2   |  0  | 2018-12-31| a   |  8     | 2018-09-01  |
| 2   |  0  | 2018-12-31| b   |  90    | 2018-12-01  |  
+-----+-----+-----------+-----+--------+-------------+

【问题讨论】:

    标签: mysql sql mysql-python


    【解决方案1】:

    这个查询应该会给你想要的结果:

    SELECT *
    FROM TableA a
    JOIN TableB b ON b.date_B < a.date_A
    

    输出:

    id_A    op_A    date_A      id_b    other   date_B
    1       0       2018-10-01  a       8       2018-09-01
    2       0       2018-12-31  a       8       2018-09-01
    2       0       2018-12-31  b       90      2018-12-01
    

    Demo on SQLFiddle

    【讨论】:

    • 完美!谢谢!
    猜你喜欢
    • 2012-09-17
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2011-04-29
    • 2017-01-25
    • 2010-12-07
    相关资源
    最近更新 更多