mysql - mysql LEFT 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 加入最后一个表
解决方案
尝试向您的第一个查询添加一个行号,如下所示,并在加入 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
推荐阅读
- java - 尝试连接以设置 STOMPClient 连接时出现错误,这可能是什么问题?
- javascript - 如何向外部网站发出 get 请求并通过 express 显示数据
- azure-cognitive-search - ResourceCounter.Quota 属性什么时候可以为空?
- javascript - 如何使用var变量值在html中显示div
- python - 如何查询 Wagtail 标签而不创建数百个查询,n+1 问题?
- python-3.x - 一种使用分隔符将两个文本文件的内容合并为一个以区分内容来自两个不同文件的方法
- c# - 图像未显示在 Xamarin Forms ImageCircle 插件中
- php - 将网站上传到主机时出现 Codeigniter 错误
- opengl - OpenGL中带有渐变的透明蒙版
- sql - SQL 正确连接。我怎样才能简化它?