我使用内部联接命令从两个表中获取数据。但是,当我运行SQL查询时。
我把同一张唱片复制了48次。
我创建的SQL查询在下面
SELECT
ABS_LIMIT.B1_NAME, ABS_LIMIT.B2_NAME, ABS_LIMIT.B3_NAME, ABS_LIMIT.ELEM_NAME
FROM
ABS_LIMIT
INNER JOIN
RTU_SCAN ON RTU+SCAN.B1_NAME = ABS_LIMIT.B1_NAME
WHERE
ABS_LIMIT.B3_NAME LIKE 'AMP%';
有人知道如何从查询结果中删除重复项吗?
您从不从RTU_SCAN
中SELECT
任何列,因此您可以使用EXISTS
而不是INNER JOIN
:
SELECT a.B1_NAME,
a.B2_NAME,
a.B3_NAME,
a.ELEM_NAME
FROM ABS_LIMIT a
WHERE EXISTS (SELECT 1 FROM RTU_SCAN r WHERE r.B1_NAME = a.B1_NAME)
AND a.B3_NAME LIKE 'AMP%';
然后,如果RTU_SCAN
中有重复的行,它们将不会在输出中传播重复的行。
或者,您可以使用DISTINCT
来删除重复项:
SELECT DISTINCT
a.B1_NAME,
a.B2_NAME,
a.B3_NAME,
a.ELEM_NAME
FROM ABS_LIMIT a
INNER JOIN RTU_SCAN r
ON r.B1_NAME = a.B1_NAME
AND a.B3_NAME LIKE 'AMP%';
然而,与使用EXISTS
而不首先生成重复项相比,使用DISTINCT
生成重复项并过滤掉它们可能效率较低。