gpt4 book ai didi

sql - 从 SQL Server 中的 JOIN 结果中获取不同的行

转载 作者:行者123 更新时间:2023-12-04 21:49:45 25 4
gpt4 key购买 nike

我有两个表,一个用于存储 Album_Name,另一个用于存储 Album_Photos

我想写一个查询,这样我就可以得到以下详细信息

Album_Name    Album_ID     Album_Date     ImageSmall
Album One 1 2013-08-02 100.jpg
Album Two 2 2013-09-09 55.jpg

我想从 Album_Name 表中获取相册的详细信息,并从 Album_Photo 表中获取我没有分配给相册的第一张图片

我尝试了 JOINS 但没有用,然后我创建了一个 View 将遵循 SQL 这不起作用

SELECT 
a.Album_Name AS Album_Name
, a.Album_Date AS Album_Date
, a.Page_ID AS PageID
, p.Image_ID AS Image_ID
, p.Image_Small AS Image_Small
FROM
Album_Name a
LEFT OUTER JOIN
Album_Photos p ON a.Album_ID = p.Album_ID

我尝试了 DISTINCT Album_Name 并查看它让我得到与上述语句相同的行

SELECT 
DISTINCT [Album_Name], Album_Date, Page_ID, Image_Small
FROM
vw_AlbumName_AlbumPhotos
WHERE
Page_ID = 3

示例数据 Album_NameAlbum_Photos

Album_ID    Album_Name  Album_Date  Page_ID
1 Album One 2013-08-02 3
2 Album Two 2013-09-09 3
3 Album Three 2013-09-10 9

Image_ID Page_ID Album_ID ImageSmall
1 0 1 100.jpg
2 0 1 21.jpg
3 0 1 36.jpg
4 0 1 44.jpg
5 0 2 55.jpg
6 0 2 66.jpg
7 0 3 10.jpg

感谢任何帮助。

最佳答案

您正在获取重复项,因为每个相册有多张照片。要获得一个,请使用 row_number():

SELECT Album_Name AS Album_Name, a.Album_Date AS Album_Date, a.Page_ID AS PageID,
p.Image_ID AS Image_ID, p.Image_Small AS Image_Small
FROM Album_Name a left outer JOIN
(select p.*, row_number() over (partition by Album_Id order by Image_ID) as seqnum
from Album_Photos p
) p
ON a.Album_ID = p.Album_ID and seqnum = 1;

关于sql - 从 SQL Server 中的 JOIN 结果中获取不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18717839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com