我目前有2个表需要加入。

第一个表是一个大表,有数百万条记录。第二个是匹配表。
我想加入2表。预期结果表如下所示。
我需要有关如何编写SQL来连接2个表的提示。

    Table 1

    ID X   Column X
    1      X1
    2      X2
    3      X3
    4      X4
    5      X5
    6      X6
    ...  ...
    the list goes on

    Table 2

    ID   Column Y
    1    Y1
    3    Y2
    6    Y3
    11   Y4


    Intended result

    ID X   Column X  Column Y
    1      X1        Y1
    2      X2        Y1
    3      X3        Y2
    4      X4        Y2
    5      X5        Y2
    6      X6        Y3
    7      X7        Y3
    8      X8        Y3
    9      X9        Y3
    10     X10       Y3
    11     X11       Y4
    12     X12       Y4

最佳答案

SELECT idX, columnX, columnY
FROM (
    SELECT id, columnY, @prevID AS prevID, @prevID := id
    FROM table2
    CROSS JOIN (SELECT @prevID := NULL) init
    ORDER BY id DESC) AS t2
JOIN table1 AS t1 ON t1.idX >= t2.id AND (t2.prevID IS NULL OR t1.idX < t2.prevID)


DEMO

关于mysql - 具有范围ID匹配的联接表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21303564/

10-10 15:07