[英]T-SQL query to select only rows which do not have a unique value in specific column
我在SQLServer中有一個具有以下三列的表:
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.