【问题标题】:Finding rows with same values in multiple columns在多列中查找具有相同值的行
【发布时间】:2012-06-18 20:26:46
【问题描述】:

我正在尝试查找具有重复值的行,但仅基于选定的列数,而不是单列或整行。例如,如果我的表如下所示:

ID     Address    State    Name
-------------------------------
0      7 Brown    NY       John
1      3 Red      WX       Jane
2      7 Brown    WX       Ted
3      7 Brown    NY       Fred

我的问题是:

查找行的地址和状态字段与另一行的地址和状态字段匹配的行的所有 ID。

这个问题的答案是:

ID    Address    State    Name
------------------------------
0     7 Brown    NY       John
3     7 Brown    NY       Fred

有什么想法吗?

建议: How to select multiple columns values same rows from single table

【问题讨论】:

  • 也许标签带有“TSQL”?

标签: sql sql-server


【解决方案1】:

尝试以下方法:

SELECT A.*
FROM YourTable A
INNER JOIN (SELECT Address, State
            FROM YourTable
            GROUP BY Address, State
            HAVING COUNT(*) > 1) B
ON A.Address = B.Address AND A.State = B.State

【讨论】:

  • 好的,虽然这些都可以正常工作。我想我会坚持这个。谢谢。
  • 处理这种情况的更好更简单的方法stackoverflow.com/questions/13807314/…
  • @himanshupareek66 我看不出区别。之所以在这里加入,是因为 op 想要有重复的整行,而不仅仅是地址和状态
【解决方案2】:
select *
from #table1
where Addr + St in (select Addr + St as FullAddr
             from #table1
             group by Addr + St
             having count(Addr+St) > 1)

【讨论】:

  • SQL 中的字符串连接运算符是|| 而不是+。但最好还是使用where (addr, st) in (select addr, st from ...),而不是连接字符串(这可能会导致地址和状态的某些组合出现问题)
猜你喜欢
  • 2016-05-21
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 2021-08-02
  • 2016-06-04
  • 1970-01-01
相关资源
最近更新 更多