programing

mysql 쿼리에서만 첫 번째 행 가져오기

minimums 2023. 8. 26. 10:41
반응형

mysql 쿼리에서만 첫 번째 행 가져오기

만약 내가 다음과 같은 질문이 있다면,

select * from tbl_foo where name = 'sarmen'

이 테이블에는 = sarmen이라는 이름의 인스턴스가 여러 개 있습니다. 자동으로 발생하는 열을 만들지 않고도 어떻게 각 행에 행 번호를 가상으로 할당할 수 있습니까?나는 내가 하는 일에 이유가 있고 내 예에서 auto_incrated col이 필요하지 않습니다.

그래서 만약 각 행이 sql 또는 아마도 php를 통해 가상 행 번호를 할당한다면, 나는 내가 필요할 때 언제든지 첫 번째 행이나 마지막 행을 출력할 수 있을 것입니다.

thnx

하나의 행만 반환하는 방법LIMIT 1:

SELECT *
FROM tbl_foo
WHERE name = 'sarmen'
LIMIT 1

'첫 번째 줄'이나 '마지막 줄'이라고 말하는 것은 말이 안 됩니다.ORDER BY다음을 추가한다고 가정합니다.ORDER BY절을 사용하면 다음과 같은 방법으로 LIMIT를 사용할 수 있습니다.

  • 첫 번째 행 사용 방법LIMIT 1.
  • 두 번째 행을 얻으려면 간격띄우기와 함께 한계를 사용할 수 있습니다.LIMIT 1, 1.
  • 마지막 행을 순서 반전(ASC를 DESC로 변경하거나 그 반대로 변경)하려면 다음을 사용합니다.LIMIT 1.

순서가 결정되는 방법을 지정하지 않았지만 MySQL에서 순위 값이 제공됩니다.

SELECT t.*,
       @rownum := @rownum +1 AS rank
  FROM TBL_FOO t
  JOIN (SELECT @rownum := 0) r
 WHERE t.name = 'sarmen'

그런 다음 순위 값을 기준으로 원하는 행을 선택할 수 있습니다.

다음을 사용하여 특정 이름이 포함된 총 행 수를 가져올 수 있습니다.

SELECT COUNT(*) FROM tbl_foo WHERE name = 'sarmen'

카운트에 따라 다음을 사용하여 n번째 행을 얻을 수 있습니다.

SELECT * FROM tbl_foo WHERE name = 'sarmen' LIMIT (n - 1), 1

여기서 1 <= n <= COUNT(*)는 첫 번째 쿼리에서 가져옵니다.

:

세 번째 줄 얻기

SELECT * FROM tbl_foo WHERE name = 'sarmen' LIMIT 2, 1

언급URL : https://stackoverflow.com/questions/3217217/grabbing-first-row-in-a-mysql-query-only

반응형