【发布时间】:2016-12-10 20:56:21
【问题描述】:
我正在编写一个在 SQL 上运行的脚本。查询是检查选取的列(在本例中为 kolumna1、kolumna2 或 kolumna3)是否存在重复值。然后,在找到这些值之后,我想返回包含这些值的每一行。例如,查看我拥有的表,如果我查看 kolumna1 列,其中一个重复值将在第 2 行和第 8 行中。所以在这种情况下,我想返回整个第二行和第八行。 当然主要目标是返回具有重复值的每一行,这只是一个更简单的示例。
桌子:
INSERT INTO `tabela_testowa` (`id`, `kolumna1`, `kolumna2`, `kolumna3`, `kolumna4`) VALUES
(1, 'wartosc1', 'wartosc2', 'wartosc3', 1),
(2, 'warosc21', 'wartosc22', 'wartosc23', 5),
(3, 'wartosc31', 'wartosc22', 'wartosc32', 6),
(4, 'wartosc54', 'wartosc43', 'wartosc45', 4),
(5, 'wartosc43', 'wartosc23', 'wartosc34', 4),
(6, 'wartosc43', 'wartosc54', 'wartosc43', 2),
(7, 'wartosc54', 'wartosc52', 'wartosc53', 8),
(8, 'wartosc21', 'wartosc22', 'wartosc43', 4),
(9, 'wartosc43', 'wartosc33', 'wartosc45', 9),
(10, 'wartosc87', 'wartosc62', 'wartosc11', 3);
到目前为止,我已经设法编写了一个几乎可以正常工作的查询。几乎我的意思是它返回重复项,但每个只返回一次。
查询:
SELECT id, kolumna1
FROM tabela_testowa
GROUP BY kolumna1
HAVING ( COUNT(kolumna1) > 1 );
编辑:我正在使用 mysql。另外,为了澄清我只想搜索我选择的一列来搜索重复值,然后显示包含它们的整行(当然我的意思是两行,比如第 2 行和第 8 行)。
【问题讨论】:
-
首先决定你的 DBMS,
MYSQLSQL SERVER -
我刚刚注意到我实际上选择了 sql server 标签。我只使用mysql,现在在编辑中更改它。
标签: mysql