2017-01-04 3 views
1

Я использую ниже заявление SQL, чтобы получить количество строк и отображать все столбцы, я хотел бы иметь в наборе результатов, любезно hereПолучить количество строк Вместе столбцов таблицы

Это лучший подход или есть ли более эффективные и эффективные способы достижения желаемых результатов

SELECT mainsql.* 
FROM ( SELECT t.*, 
       COUNT (
        1) 
       OVER (
        ORDER BY 1 
        RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) 
        row_count 
      FROM (SELECT * FROM users) t 
     ORDER BY 1) mainsql 

Update 1

SELECT s.*, COUNT (*) OVER() AS row_count 
    FROM users s 
WHERE (1 = 1 AND user_name = 'SCOTT') 

ответ

2

Ваш запрос можно записать проще:

SELECT s.*, count(*) over() as row_count 
FROM users s; 

Тем не менее, более быстрый запрос (не нужно считать строки перед получением результата) и немного отличается:

SELECT s.*, rownum as row_number 
FROM users s; 

Последний извлекается строка будет содержать количество строк. Это может не помочь вам (я не знаю, чего вы хотите достичь).

+0

То, что я пытаюсь достичь, - это также получить общее количество строк вместе с столбцами таблицы базы данных. Я попробовал свой первый запрос, и все в порядке и быстрее, однако, когда условия применяются, счет все равно общий счет. – user75ponic

+0

Я включил свой модифицированный запрос как обновление 1 в вопрос, где условие, однако, row_count все еще показывает количество общих строк в таблице users. Условие where генерируется динамически каркасом, который я использую. – user75ponic

+0

Вы должны добавить столбец 'COUNT (*) OVER() AS row_count' на том же уровне с условием' where'. Если запрос является подзапросом, подсчет будет вычисляться до того, как применяется. –

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