Out*_*man 3 sql t-sql sql-server sql-server-2008 sql-server-2008-r2
我在 SQL Server 中创建了这个简单的数据库:
create database product_test
go
use product_test
go
create table product
(
id int identity primary key,
label varchar(255),
description text,
price money,
);
create table picture
(
id int identity primary key,
p_path text,
product int foreign key references product(id)
);
insert into product
values ('flip phone 100', 'back 2 the future stuff.', 950),
('flip phone 200', 's;g material', 1400)
insert into picture
values ('1.jpg', 1), ('2.jpg', 1), ('3.jpg', 2)
Run Code Online (Sandbox Code Playgroud)
我想要的是选择所有产品,并且每个产品仅选择一张图片。任何帮助是极大的赞赏。
outer apply我是为此目的的粉丝:
select p.*, pi.id, pi.path
from product p outer apply
(select top 1 pi.*
from picture pi
where pi.product = p.id
) pi;
Run Code Online (Sandbox Code Playgroud)
您可以包含 来order by获取一张特定图片(例如 ID 最低或最高的图片)。或者,order by newid()随机获得一个。