簡體   English   中英

T-SQL查詢以僅選擇在特定列中沒有唯一值的行

[英]T-SQL query to select only rows which do not have a unique value in specific column

我在SQLServer中有一個具有以下三列的表:

  • 行ID
  • RMA

RowID是唯一的,但RMA和Value不是唯一的。

我想編寫一個查詢,從表中選擇共享任何特定RMA的所有行。 假設我們有以下三行

ID  RMA   Value
1 - 222- Car
2 - 923 - Boat
3 - 222 - Plane
4 - 555 - Other
5 - 555 - Jet

我想要一個查詢,該查詢將返回行1、3、4和5。將不會選擇行2,因為它的RMA僅發生一次。

我什至不知道從哪里開始。 我是否需要使用COUNT()函數?

您可以使用如下形式:

select * 
from your_Table
where RMA in 
    (
        select RMA
        from your_table
        group by RMA
        having count(RowID) > 1
    )

內部查詢為您提供多次發生的RMA,外部查詢為您提供具有這些RMA的記錄。

試試這個

select id,rma,value from yourtable where rma in 
(select RMA from yourtable 
group by RMA having count(*)>1)

這是exists的另一種不需要聚合的方法:

select * 
from yourtable y
where exists (
    select 1
    from yourtable y2 
    where y.rma = y2.rma and y.id != y2.id )
SELECT RowID, 
        RMA, 
        [Value]
FROM (
    SELECT  RowID, 
            RMA, 
            [Value],
            COUNT(*) OVER (PARTITION BY RMA ORDER BY RMA) as c
    FROM YourTable
    ) as p
WHERE p.c > 1

輸出:

RowID   RMA Value
3       222 Plane
1       222 Car
4       555 Other
5       555 Jet
SELECT * FROM TABLE 
WHERE RMA IN
(SELECT RMA FROM TABLE GROUP BY RMA HAVING COUNT(*) >1)

您可以使用僅考慮COUNT RMA> 1的行的嵌套查詢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM