使用下面的代码,我试图获得不是唯一的行,这些行具有相同的columnName
和TableName
对。表columns_old
有大约22,000个值,下面的查询返回2000.我想得到这样的行,因为通过尝试插入此select
我得到的错误行没有唯一值。这样我想得到这样有问题的行:
SELECT ColumnName,tablename
FROM columns_old
group by ColumnName, tablename
having count(*)> 1;
结果已经由tableName排序,我得到了这样的行:
ColName TableName
coa_end_dt coa
coa_name coa
coa_num coa
coa_src_id coa
coa_start_dt coa
coa_template_id coa_tmplt
deleted_flag geog_area
........ ......
但我认为结果是这样的:
ColName TableName
coa_end_dt coa
coa_end_dt coa
coa_name coa
coa_name coa
coa_name coa
coa_num coa
....
这里发生了什么?只是无法弄清楚
答案 0 :(得分:1)
根据对您问题的修订,您似乎不希望只看到 ColumnName 和 tablename 的哪些组合出现在多行中。您希望查看包含它们的实际行。
在这种情况下,将原始查询连接回源表以仅检索匹配的行:
SELECT co.ColumnName, co.tablename
FROM
columns_old AS co
INNER JOIN
(
SELECT ColumnName, tablename
FROM columns_old
GROUP BY ColumnName, tablename
HAVING count(*)> 1
) AS sub
ON co.ColumnName = sub.ColumnName AND co.tablename = sub.tablename;