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
啊。简单连接。:)谢谢,啊。简单连接。:)谢谢,啊。简单连接。:)谢谢,啊。简单连接。:)非常感谢。