mysql LEFT JOIN在行号上

时间:2019-08-08 17:44:46

标签: mysql join

我有这两个桌子

*tableA
id - name
1  - a
2  - b

*tableB
col - name
a  - red
b  - green
b  - white
a  - black

以及此查询

SELECT a.id
     , a.name
     , b.name 
  FROM tableA a 
  LEFT 
  JOIN tableB b 
    ON A.name = B.id

我有

1 - a - black
1 - a - red
2 - b - green
2 - b - white

现在我想加入另一个tableC来根据位置获取前4个元素

tableC
pos - name
1 - first
2 - second
3 - third
4 - fourth
5 - fifth

有这个结果

1 - a - black - first
1 - a - red - second
2 - b - green - third
2 - b - white - fourth

如何使用rowNumber-> tableC.pos联接最后一个表

1 个答案:

答案 0 :(得分:1)

尝试将行号添加到您的第一个查询中,如下所示,并在加入tableC时使用它:

DECLARE @row_number int := 0;

select t.*, c.name
from (
       SELECT a.id, a.name, b.name, (@row_number:=@row_number + 1) AS rn 
       FROM tableA a 
       LEFT JOIN tableB b ON A.name = B.col
) t
left join tableC c on c.pos = t.rn