sql server 顶级查询

标签 sql sql-server select

我不知道这个查询有什么问题:

select * from products , top 1 * from pic 
where products.productId = pic.productId

我有 Products 和 Pic 表,每个产品可以有 1 到 n 个图片,我想退回每个产品和第一张图片

图表图片可能会有所帮助enter image description here

最佳答案

您需要有一种方法来唯一标识每张图片,所以我将该表假设为 ID 列...

SELECT
  *
FROM
  products
LEFT JOIN
  pic
    ON pic.Id = (SELECT TOP 1 id FROM pic WHERE productID = products.ProductID ORDER BY id DESC)


编辑

受另一个答案的启发,改为使用 APPLY...

SELECT
  *
FROM
  products
OUTER APPLY
  (SELECT TOP 1 * FROM pic WHERE productID = products.ProductID ORDER BY id DESC) AS pic

关于sql server 顶级查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6097623/

相关文章:

sql - 如何使用子查询结果作为另一个查询的列名

mysql - 多对多 select 语句不正确

sql-server - 加密表中的列

java - 如何在 Apache Derby 中选择聚合的学生/类(class)数据?

php - Laravel DB 同时运行两个查询(SELECT/UPDATE)

sql - 根据值是否存在于另一个表中进行更新

mysql - 如何优化我的sql代码?

sql-server - SQL Server Management Studio 中的错误前缀或后缀字符无效

SQL-Server 聚合(Count)可能不会出现在 WHERE 中

mysql - SQL:选择 * WHERE 截止日期和 NOW() 后的截止时间,不带 DATETIME()