数据库有表格照片和PhotoAlbums。我需要一个查询来选择所有专辑和每张专辑中只有一张照片。我需要此查询的SQL和LINQ版本。提前致谢。sql和linq查询
回答
在LINQ我不是在它经历,所以我只会给SQL Server查询
SELECT a.*,b.MyPhoto FROM PhotoAlbums a,(SELECT Top 1 myPhoto from Photos Where AlbumID = a.ID) b
或本
SELECT a.AlbumID, a.Title, a.Date, (SELECT TOP (1) c.PhotoID FROM Photos c WHERE(c.AlbumID = a.AlbumID)) AS PhotoID FROM PhotoAlbums as a
请参阅我的新问题 – 2010-03-31 12:07:40
如果表是这样的:
PhotoAlbums
AlbumID PK
...
Photos
PhotoID PK
AlbumID FK
Photo
...
以下是SQL查询:
SELECT
a.*,p.Photo
FROM PhotoAlbums a
LEFT OUTER JOIN (SELECT
AlbumID,MIN(PhotoID) AS MinPhotoID
FROM Photos
GROUP BY AlbumID
) dt ON a.AlbumID=dt.AlbumID
LEFT OUTER JOIN Photos p ON dt.MinPhotoID=p.PhotoID
工作示例:
DECLARE @PhotoAlbums table (AlbumID int)
INSERT @PhotoAlbums VALUES (1)
INSERT @PhotoAlbums VALUES (2)
INSERT @PhotoAlbums VALUES (3)
DECLARE @Photos table (PhotoID int,AlbumID int, Photo varchar(10))
INSERT @Photos VALUES (1,1,'A')
INSERT @Photos VALUES (2,1,'B')
INSERT @Photos VALUES (3,1,'C')
INSERT @Photos VALUES (4,2,'AA')
INSERT @Photos VALUES (5,3,'AAA')
INSERT @Photos VALUES (6,3,'BBB')
SELECT
a.*,p.Photo
FROM @PhotoAlbums a
LEFT OUTER JOIN (SELECT
AlbumID,MIN(PhotoID) AS MinPhotoID
FROM @Photos
GROUP BY AlbumID
) dt ON a.AlbumID=dt.AlbumID
LEFT OUTER JOIN @Photos p ON dt.MinPhotoID=p.PhotoID
OUTPUT:
AlbumID Photo
----------- ----------
1 A
2 AA
3 AAA
(3 row(s) affected)
hmmm ...当我尝试执行您的和Kronass的查询时,VS2008格式化查询,然后返回错误。对于MySQL和MSSQL,SQL是否相同? – 2010-03-31 11:21:42
是的,表格就像你假设 – 2010-03-31 11:22:01
和错误信息会是? – 2010-03-31 11:24:15
LINQ查询可能是这样的:
from album in context.PhotoAlbums
from photo in album.Photos.Take(1).DefaultIfEmpty()
select new
{
Album = album,
Photo = photo
}
这个工程!谢谢 – 2010-03-31 13:48:01
- 1. LINQ和SQL查询比较
- 2. Sql Linq查询
- 3. SQL查询LINQ
- 4. 用SQL查询LINQ查询
- 5. SQL查询的LINQ to SQL查询
- 6. LINQ到SQL查询
- 7. C# - SQL - LINQ查询
- 8. LINQ to SQL查询
- 9. sql查询到Linq
- 10. SQL查询 - > LINQ
- 11. LINQ to SQL查询
- 12. SQL查询到Linq到SQL
- 13. SQL到LINQ JOIN和子查询
- 14. WP7 LINQ to SQL和Aggregate查询
- 15. SQL查询到Linq GroupBy和Max
- 16. LINQ to SQL和已编译的查询
- 17. SQL查询到LINQ查询语法
- 18. 转换SQL查询/子查询LINQ
- 19. 转换SQL查询LINQ查询
- 20. 基础 - SQL查询到LINQ查询
- 21. 在LinQ查询中转换SQL查询
- 22. SQL Server查询到LINQ查询
- 23. SQL自加入查询到LINQ查询
- 24. 转换SQL查询/子查询LINQ(VB)
- 25. 将SQL查询转换为LINQ查询
- 26. 将sql查询转换为linq查询
- 27. 将SQL查询转换为LINQ查询
- 28. SQL查询与联接到Linq查询
- 29. 将SQL查询转换为linq查询
- 30. 对应的SQL查询的LINQ查询
你想从每个相册里面的照片? – 2010-03-31 10:50:18
现在任何照片..后来我会编辑表照片,以便它有字段“albumcover”,但现在我需要随机一个 – 2010-03-31 10:51:42
您选择的查询效率低下,因为它必须运行不同的查询来查找返回的每一行的照片来自PhotoAlbums。使用派生表并将PhotoAlbum添加到该表中会更好。 – 2010-03-31 12:55:50