2015-08-26 1 views
1

С приведенным ниже кодом я пытаюсь получить не уникальные строки, строки которых имеют одну и ту же пару columnName и TableName. Таблица columns_old имеет около 22 000 значений, запрос ниже возвращает 2000. Я хочу получить такие строки, потому что, пытаясь вставить этот select, я получаю строки ошибок с уникальными значениями. Таким образом, я хочу, чтобы получить такие проблемные строки:Запрос на поиск не уникальных строк не работает должным образом в Access

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 
.... 

Что здесь происходит? Просто не могу понять его

+1

Вы говорите, что результаты включают в себя пары значений ColName и TABLENAME которые встречаются только в отдельных строках. .. не в нескольких рядах? Это не представляется возможным. – HansUp

+2

Итак, что именно не так с этим результатом? – Bulat

+1

Пожалуйста, поставьте себе на себя обувь. Не зная, как выглядят ваши данные, и каков ваш желаемый результат, как мы можем сказать, что что-то не так с вашим выходом? На основе вашего описания того, что вы хотите, ваш запрос выглядит хорошо. – sstan

ответ

1

На основе пересмотра на ваш вопрос кажется вы не хотите, чтобы видеть только какие комбинации ColumnName и имя_таблицы присутствуют более чем в одной строке. Вы хотите увидеть фактические строки, которые содержат их.

В этом случае присоединиться исходный запрос обратно к исходной таблице, чтобы получить только совпадающие строки:

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; 

 Смежные вопросы

  • Нет связанных вопросов^_^