[sql] SQL-처음 10 개 행만 선택 하시겠습니까?

쿼리의 처음 10 개 결과 만 선택하려면 어떻게합니까?

다음 쿼리에서 처음 10 개의 결과 만 표시하고 싶습니다.

SELECT a.names,
         COUNT(b.post_title) AS num
    FROM wp_celebnames a
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY a.names
ORDER BY num DESC



답변

SQL 서버에서 다음을 사용하십시오.

select top 10 ...

예 :

select top 100 * from myTable
select top 100 colA, colB from myTable

MySQL에서는 다음을 사용하십시오.

select ... order by num desc limit 10


답변

RDBMS에 따라 다름

MS SQL 서버

SELECT TOP 10 ...

MySQL

SELECT ... LIMIT 10

Sybase

SET ROWCOUNT 10
SELECT ...

기타.


답변

MySQL에서 :

SELECT * FROM `table` LIMIT 0, 10


답변

ANSI SQL 대답은 FETCH FIRST.

SELECT a.names,
         COUNT(b.post_title) AS num
    FROM wp_celebnames a
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY a.names
ORDER BY num DESC
FETCH FIRST 10 ROWS ONLY

동점을 포함하려면 FETCH FIRST 10 ROWS WITH TIES대신하십시오.

지정된 수의 행을 건너 뛰려면 다음을 사용하십시오 OFFSET.

...
ORDER BY num DESC
OFFSET 20
FETCH FIRST 10 ROWS ONLY

처음 20 개 행을 건너 뛴 다음 10 개 행을 가져옵니다.

최신 버전의 Oracle, PostgreSQL , MS SQL Server, Mimer SQL 및 DB2 등에서 지원됩니다.


답변

표준 SQL에서는 다음을 사용할 수 있습니다.

... FETCH FIRST 10 ROWS ONLY

이는 DB2, PostgreSQL 및 Oracle 12.1 (이상)에서 지원됩니다.


답변

신탁

WHERE ROWNUM <= 10  and whatever_else ;

ROWNUM각 행의 시퀀스 번호 1을 포함하는 매직 변수입니다. n .


답변

SELECT *
  FROM (SELECT ROW_NUMBER () OVER (ORDER BY user_id) user_row_no, a.* FROM temp_emp a)
 WHERE user_row_no > 1 and user_row_no <11  

이것은 나를 위해 일했습니다. 내가 볼 수있는 유용한 dbscript가 거의 없다면

유용한 Dbscript