Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL仅选择具有给定名称的第一个_Sql - Fatal编程技术网

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