2015-12-01 7 views
-2

Я пытаюсь создать счет всех записей из нескольких таблиц. Например:Неверный подсчет в Oracle SQL Developer

SELECT * 
FROM DB.TABLEA A 
    INNER JOIN DB.TABLEB B on A.A_KEY=B.B_KEY 
    INNER JOIN DB.TABLEC C on A.A_KEY=C.C_KEY 
    INNER JOIN DB.TABLED D on A.A_KEY=D.D_KEY 

Мои результаты вернуть записи, и когда я правой кнопкой мыши и выберите «Count Ряды», я получаю номер в всплывающем окне - скажем, 100000.

Но когда я делаю «Ctrl + A», чтобы выделить все записи, я получаю другое количество результатов - скажем, 150 000. Я нажимаю правой кнопкой мыши и снова выбираю «Count Rows», и на этот раз всплывающее СЕЙЧАС говорит 150 000 - где раньше я делал «Ctrl + A», он сказал 100 000. Если я экспортирую данные в текстовый файл из SQL Developer, я получу 150 000 записей.

Если я запрашиваю те же таблицы, которые выбирают граф, я получаю 100 000 записей.

SELECT COUNT(*) 
FROM DB.TABLEA A 
    INNER JOIN DB.TABLEB B on A.A_KEY=B.B_KEY 
    INNER JOIN DB.TABLEC C on A.A_KEY=C.C_KEY 
    INNER JOIN DB.TABLED D on A.A_KEY=D.D_KEY 

Кто-нибудь видел это раньше? Это что-то странное в моем наборе данных или что-то в SQL Developer, которое немного «выключено»?

ответ

1

Выполнение учета в сетке/результатах в SQL Developer фактически не подсчитывает строки в текущем результирующем наборе, возвращаемом оператором.

делает количество записей запускает другой запрос, который в основном делает

SELECT COUNT(1) 
FROM (
    "your original query here" 
    ) sub1 

Так, это могло быть иначе? да.

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