Sql 如何选择一个字段并检查其本身?
我想说Sql 如何选择一个字段并检查其本身?,sql,sql-server,Sql,Sql Server,我想说 select col1,col2,col3 from table1 inner join table2 on table1.col1=table2.col1 and ..... ( ? ) ?:我只希望表1中的1条记录或第一条记录与表2中的第一条记录合并。但是该命令会导致所有可以连接的记录都被连接。例如,如果表1中有2条记录,col1=1432,而表2中只有1条记录,col1=1432命令加入了所有记录。但我想加入表1的第一
select col1,col2,col3
from table1
inner join table2 on table1.col1=table2.col1
and ..... ( ? )
?:我只希望表1中的1条记录或第一条记录与表2中的第一条记录合并。但是该命令会导致所有可以连接的记录都被连接。例如,如果表1中有2条记录,col1=1432,而表2中只有1条记录,col1=1432命令加入了所有记录。但我想加入表1的第一个和表2的第一个
我想显示多于1条要加入的记录的所有记录
我只想要表1中的1条记录或第一条记录与第一条记录合并
表2的记录
给你:
select top 1 col1,col2,col3
from table1
inner join table2 on table1.col1=table2.col1
and .....
请尝试此查询-
SELECT *
FROM dbo.table1 t1
JOIN (
SELECT TOP 1 *
FROM dbo.table2
) t2 ON t1.col1 = t2.col1
如果您使用的是SQL Server 2005或更高版本,则可以尝试仅获取每个组的第一条记录:
select *
from (
select a.col1
, a.col2
, a.col3
-- Use the order by to determine which rows will be ranked first for each group
, row_number() over (partition by a.col1 order by a.col2) as rownum
from table1 as a
join table2 as b on a.col1 = b.col1
) as q
where rownum = 1 -- Only get the first row of each group
我想显示多于1条要加入的记录的所有记录
您可以将其添加到where子句中:
and exists (
select col1
from table1
where col1 = q.col1
group by col1
having count(*) > 1
)
为了提供另一个不使用排名函数的解决方案,我认为我们需要更多地了解您的表格,特别是唯一的键以及如何定义每个组的第一条记录。您能给出表的结构吗?我认为您需要在
col1
上按分组,然后思考您想要在col2
和col3
中显示什么。如果您需要显示每个组的第一条记录,您可能想看看这个问题:当我使用GROUPBY时没有什么不同。因为它是通过内部连接连接的。我有两个表::表1:col1,col2,col3:key,col4,col5;表2:col1,col2,col3,col4:key,col5,col6,col7;表1中的col1和表2中的col1用于联接。表1的col1中的数据可能重复,表2的col1中的数据也可能重复。在表1 col1中,col2必须与表2 col1、col2相同;但可能是每个表的两条记录有相同的数据!所以我想从表1中选择每个记录,只选择表2的一条记录。可以从每个表中指定其他记录我要选择表中的所有记录。这只是一个记录!你能告诉我你桌子的结构吗?可以添加一个SQL提琴,请重新表述您的问题吗?我不认为我完全正确!好的,请提供有关表的更多信息,例如键以及如何确定每个组的“第一”行;表2:col1,col2,col3,col4:key,col5,col6,col7;表1中的col1和表2中的col1用于联接。表1的col1中的数据可能重复,表2的col1中的数据也可能重复。在表1 col1中,col2必须与表2 col1、col2相同;但可能是每个表的两条记录有相同的数据!所以我想从表1中选择每个记录,只选择表2的一条记录。可以从每个表中指定其他记录