Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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_Sql Server - Fatal编程技术网

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的一条记录。可以从每个表中指定其他记录