Sql 选择具有相同字段值的行

Sql 选择具有相同字段值的行,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,如何仅查询表中显示两次的记录 目前,我的表格如下所示: 数字日期记录ReadLoc 12308/13/13下午1:00 N离开 12308/13/13下午2:00回家 12308/13/13下午3:00北纬 12308/13/13下午4:00北纬 我需要一个查询,该查询将选择在RecordT字段中具有相同“值”且在ReadLoc字段中具有相同“值”的记录 因此,我的上述结果将与查询一起显示: 数字日期记录ReadLoc 12308/13/13下午3:00北纬 12308/13/13下午4:00北

如何仅查询表中显示两次的记录

目前,我的表格如下所示:

数字日期记录ReadLoc 12308/13/13下午1:00 N离开 12308/13/13下午2:00回家 12308/13/13下午3:00北纬 12308/13/13下午4:00北纬 我需要一个查询,该查询将选择在RecordT字段中具有相同“值”且在ReadLoc字段中具有相同“值”的记录

因此,我的上述结果将与查询一起显示:

数字日期记录ReadLoc 12308/13/13下午3:00北纬 12308/13/13下午4:00北纬 我试着做一个如下的子选择:

选择t.编号、t.日期、n.记录、n.读取位置 从表1 t连接表2 n在t上编号=n编号 其中,t.编号在表1中,按COUNTt.编号>1的t.编号分组 和n.ReadLoc中的n.ReadLoc从表2中选择n.ReadLoc组n.ReadLoc,其COUNTn.ReadLoc>1
以下内容可作为基础:

;with cte as (
    select *, cnt = count(1) over (partition by RecordT, ReadLoc)
    from TableName
)
select *
from cte
where cnt > 1
如果TableName实际上是两个联接表的视图,请尝试:

;with TableName as (
    SELECT t.Number, t.Date, n.RecordT, n.ReadLoc
    FROM Table1 t
        join Table2 n ON t.Number = n.Number
),
cte as (
    select Number, Date, RecordT, ReadLoc,
        cnt = count(1) over (partition by RecordT, ReadLoc)
    from TableName
)
select Number, Date, RecordT, ReadLoc
from cte
where cnt > 1 /* and RecordT='N' and ReadLoc='AWAY' */

以下内容可作为基础:

;with cte as (
    select *, cnt = count(1) over (partition by RecordT, ReadLoc)
    from TableName
)
select *
from cte
where cnt > 1
如果TableName实际上是两个联接表的视图,请尝试:

;with TableName as (
    SELECT t.Number, t.Date, n.RecordT, n.ReadLoc
    FROM Table1 t
        join Table2 n ON t.Number = n.Number
),
cte as (
    select Number, Date, RecordT, ReadLoc,
        cnt = count(1) over (partition by RecordT, ReadLoc)
    from TableName
)
select Number, Date, RecordT, ReadLoc
from cte
where cnt > 1 /* and RecordT='N' and ReadLoc='AWAY' */
这不应该起作用吗:

select * 
from table1 
where (RecordT, ReadLoc) in 
   (select RecordT, ReadLoc 
    from table1 
    group by RecordT, ReadLoc 
    having count(*) > 1)
这不应该起作用吗:

select * 
from table1 
where (RecordT, ReadLoc) in 
   (select RecordT, ReadLoc 
    from table1 
    group by RecordT, ReadLoc 
    having count(*) > 1)

检查此问题:检查此问题:可能希望>1不=2,因为它不喜欢“我在附近得到了不正确的语法”。我没有意识到您正在使用sql server。这是oracle语法。Goat CO提到的答案应该适用于sql server。可能出于某些原因,它不喜欢“Iget error syntax near”(我在附近得到了不正确的语法)。我没有意识到您正在使用sql server。这是oracle语法。Goat CO提到的答案应该适用于sql server。我尝试过这种方法,但没有得到正确的结果。我在查询中有多个联接。有两个以上作为选择t.Number,t.Date,n.RecordT,n.ReadLoc,cnt=COUNT1通过RecordT分区,表1中的ReadLoc t在t上连接表2 n.Number=n.Number,其中n.RecordT='n'和n.ReadLoc='AWAY'SELECT*来自两个以上的,其中cnt>1I正在尝试此方法,但我没有得到正确的结果。我在查询中有多个联接。使用两个以上作为选择t.Number,t.Date,n.RecordT,n.ReadLoc,cnt=COUNT1通过记录分区,表1中的ReadLoc t连接表2中的n.Number=n.Number,其中n.RecordT='n'和n.ReadLoc='AWAY'从cnt>1的两个以上选择*,最终,上面显示的内部连接会将所有结果限制为倍数。当然,上面显示的内部连接最终会将所有结果限制为倍数。