[英]SQL - Help left join query
我正在尝试使用唯一的查询来获取数据,但是我无法获得想要的东西。 我有3张桌子:我想获取所有照片数据及其最大步长(ID和名称)。 如果他们没有,则可以使用null值。
Photo table
photo_id | photo_name
---------------------
1 | A
2 | B
3 | C
4 | D
5 | E
Steps table
step_id | step_name
----------------------
1 | AAA
2 | BBB
3 | CCC
4 | DDD
photoStep table
id | photo_id | step_id
----------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 3 | 1
5 | 5 | 1
我想要的结果是
photo_id | photo_name | step_id | step_name
-------------------------------------------
1 | A | 3 | CCC
2 | B | NULL | NULL
3 | C | 1 | AAA
4 | D | NULL | NULL
5 | E | 1 | AAA
我已经尝试过此查询,但由于行太多而错过了一些东西:
SELECT * FROM photo p
LEFT JOIN photoStep ps ON ps.photo_id=p.photo_id
我得到了这样的结果:
photo_id | photo_name | step_id | step_name
-------------------------------------------
1 | A | 1 | AAA
1 | A | 2 | BBB
1 | A | 3 | CCC
2 | B | NULL | NULL
3 | C | 1 | AAA
4 | D | NULL | NULL
5 | E | 1 | AAA
任何帮助深表感谢。 提前致谢。
您需要对每个photo_id
MAX(step_id)
做一个LEFT JOIN
:
SELECT
p.photo_id,
p.photo_name,
s.step_id,
s.step_name
FROM Photo p
LEFT JOIN (
SELECT
photo_id, MAX(step_id) AS max_step_id
FROM photoStep
GROUP BY photo_id
) ps
ON ps.photo_id = p.photo_id
LEFT JOIN Steps s
ON s.step_id = ps.max_step_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.