Sql 按查询选择与组匹配的所有项目

Sql 按查询选择与组匹配的所有项目,sql,sql-server,Sql,Sql Server,我有以下用于查找重复项的查询 SELECT Namn, ServerRef FROM TlsSignal GROUP BY Namn, ServerRef HAVING COUNT(*) > 1 如何编写一个select,返回与该查询匹配的所有行(即没有分组) 如果只有一个字段必须匹配,我会进行子选择,但当两个不同的字段必须匹配查询结果时,我不知道如何进行子选择。您可以使用该查询连接回源表,如下所示: SELECT TlsSignal.* FROM TlsSignal JOIN

我有以下用于查找重复项的查询

SELECT Namn, ServerRef
FROM TlsSignal
GROUP BY Namn, ServerRef
HAVING COUNT(*) > 1
如何编写一个select,返回与该查询匹配的所有行(即没有分组)


如果只有一个字段必须匹配,我会进行子选择,但当两个不同的字段必须匹配查询结果时,我不知道如何进行子选择。

您可以使用该查询连接回源表,如下所示:

SELECT TlsSignal.*
FROM TlsSignal
JOIN 
    (SELECT Namn, ServerRef
    FROM TlsSignal
    GROUP BY Namn, ServerRef
    HAVING COUNT(*) > 1) AS Duplicates
ON TlsSignal.Namn = Duplicates.Namn AND TlsSignal.ServerRef = Duplicates.ServerRef
或者,我可能会使用这种方法。在SQL Server中,可以使用
公共表表达式

WITH Duplicates_CTE(Namn, ServerRef)
AS
    (SELECT Namn, ServerRef
    FROM TlsSignal
    GROUP BY Namn, ServerRef
    HAVING COUNT(*) > 1)

SELECT TlsSignal.*
FROM TlsSignal
JOIN Duplicates_CTE
    ON TlsSignal.Namn = Duplicates_CTE.Namn 
    AND TlsSignal.ServerRef = Duplicates_CTE.ServerRef

您可以使用该查询连接回源表,如下所示:

SELECT TlsSignal.*
FROM TlsSignal
JOIN 
    (SELECT Namn, ServerRef
    FROM TlsSignal
    GROUP BY Namn, ServerRef
    HAVING COUNT(*) > 1) AS Duplicates
ON TlsSignal.Namn = Duplicates.Namn AND TlsSignal.ServerRef = Duplicates.ServerRef
或者,我可能会使用这种方法。在SQL Server中,可以使用
公共表表达式

WITH Duplicates_CTE(Namn, ServerRef)
AS
    (SELECT Namn, ServerRef
    FROM TlsSignal
    GROUP BY Namn, ServerRef
    HAVING COUNT(*) > 1)

SELECT TlsSignal.*
FROM TlsSignal
JOIN Duplicates_CTE
    ON TlsSignal.Namn = Duplicates_CTE.Namn 
    AND TlsSignal.ServerRef = Duplicates_CTE.ServerRef

您可以使用该查询连接回源表,如下所示:

SELECT TlsSignal.*
FROM TlsSignal
JOIN 
    (SELECT Namn, ServerRef
    FROM TlsSignal
    GROUP BY Namn, ServerRef
    HAVING COUNT(*) > 1) AS Duplicates
ON TlsSignal.Namn = Duplicates.Namn AND TlsSignal.ServerRef = Duplicates.ServerRef
或者,我可能会使用这种方法。在SQL Server中,可以使用
公共表表达式

WITH Duplicates_CTE(Namn, ServerRef)
AS
    (SELECT Namn, ServerRef
    FROM TlsSignal
    GROUP BY Namn, ServerRef
    HAVING COUNT(*) > 1)

SELECT TlsSignal.*
FROM TlsSignal
JOIN Duplicates_CTE
    ON TlsSignal.Namn = Duplicates_CTE.Namn 
    AND TlsSignal.ServerRef = Duplicates_CTE.ServerRef

您可以使用该查询连接回源表,如下所示:

SELECT TlsSignal.*
FROM TlsSignal
JOIN 
    (SELECT Namn, ServerRef
    FROM TlsSignal
    GROUP BY Namn, ServerRef
    HAVING COUNT(*) > 1) AS Duplicates
ON TlsSignal.Namn = Duplicates.Namn AND TlsSignal.ServerRef = Duplicates.ServerRef
或者,我可能会使用这种方法。在SQL Server中,可以使用
公共表表达式

WITH Duplicates_CTE(Namn, ServerRef)
AS
    (SELECT Namn, ServerRef
    FROM TlsSignal
    GROUP BY Namn, ServerRef
    HAVING COUNT(*) > 1)

SELECT TlsSignal.*
FROM TlsSignal
JOIN Duplicates_CTE
    ON TlsSignal.Namn = Duplicates_CTE.Namn 
    AND TlsSignal.ServerRef = Duplicates_CTE.ServerRef

这是您正在查找的查询:

SELECT T1.*
FROM TlsSignal T1
INNER JOIN (
    SELECT Namn
        ,ServerRef
    FROM TlsSignal
    GROUP BY Namn
        ,ServerRef
    HAVING COUNT(*) > 1
    ) AS T2 ON T1.Namn = T2.Namn
    AND T1.ServerRef = T2.ServerRef

这是您正在查找的查询:

SELECT T1.*
FROM TlsSignal T1
INNER JOIN (
    SELECT Namn
        ,ServerRef
    FROM TlsSignal
    GROUP BY Namn
        ,ServerRef
    HAVING COUNT(*) > 1
    ) AS T2 ON T1.Namn = T2.Namn
    AND T1.ServerRef = T2.ServerRef

这是您正在查找的查询:

SELECT T1.*
FROM TlsSignal T1
INNER JOIN (
    SELECT Namn
        ,ServerRef
    FROM TlsSignal
    GROUP BY Namn
        ,ServerRef
    HAVING COUNT(*) > 1
    ) AS T2 ON T1.Namn = T2.Namn
    AND T1.ServerRef = T2.ServerRef

这是您正在查找的查询:

SELECT T1.*
FROM TlsSignal T1
INNER JOIN (
    SELECT Namn
        ,ServerRef
    FROM TlsSignal
    GROUP BY Namn
        ,ServerRef
    HAVING COUNT(*) > 1
    ) AS T2 ON T1.Namn = T2.Namn
    AND T1.ServerRef = T2.ServerRef
啊。简单连接。:)谢谢,啊。简单连接。:)谢谢,啊。简单连接。:)谢谢,啊。简单连接。:)非常感谢。