SQL仅选择具有给定名称的第一个
房屋 正如你所看到的,同一条街上可能会有更多的业主 我还有另一个表,我想在其中插入SQL仅选择具有给定名称的第一个,sql,Sql,房屋 正如你所看到的,同一条街上可能会有更多的业主 我还有另一个表,我想在其中插入Houses表中的所有者,但每个街道只有一个所有者 查询结果: 表StreetRepresentant id OwnerId street ----------------------- 1 owner1 street1 2 owner2 street1 3 owner3 street2 4 owner4 street2 5 owner5 street3 (
Houses
表中的所有者,但每个街道只有一个所有者
查询结果:
表StreetRepresentant
id OwnerId street
-----------------------
1 owner1 street1
2 owner2 street1
3 owner3 street2
4 owner4 street2
5 owner5 street3
(ownerId
是表的主键,如果它重要的话。ownerId
是表中唯一的
查询应该类似于:
ownerId street
------------------
owner1 street1
owner3 street2
owner5 street3
您可以按街道分组,然后使用
MIN()
函数返回每条街道的最低所有者ID(根据您的示例)
INSERT INTO StreetRepresentant (ownerId , street )
SELECT ownerId , street
FROM Houses h
GROUP BY h.street, h.ownerId
看看像这样的东西
SELECT MIN(ownerId) , street
FROM Houses
GROUP BY street
选择行时使用Distinct关键字,希望它能起作用。
Distinct
检查行,并且没有重复的行。是否按这两个行分组?OP希望每条街道只有一个所有者。@Scrum Meister:GROUP BY应该与SELECT
兼容,否则您将得到一个错误。您的查询将返回street1的3行,因为有3个不同的所有者。请阅读OP.ownerID不是int。它是varchar。我可以使用什么聚合函数来代替min?
SELECT MIN(ownerId) , street
FROM Houses
GROUP BY street
SELECT Street,
MIN(ID) FirstAvailableID
FROM Houses
GROUP BY Street