sourcecode

mysql 테이블에서 특정 행 선택

codebag 2023. 10. 5. 21:33
반응형

mysql 테이블에서 특정 행 선택

이상적으로 나는 다음과 같은 질문이 필요합니다.

select * from customer where row_number() = 3

하지만 그건 불법입니다.

자동 증분 필드를 사용할 수 없습니다.

row_number ()은(는) 선택해야 하는 행입니다.

어떻게 해야 합니까?

편집: 글쎄, 나는 연습할 때 iSql*plus를 사용하는데, 어떤 이유에서인지 limit과 auto_increment를 사용하는 것은 불법입니다.저는 결국 시퀀스와 트리거를 만들었고, 입력이 있을 때마다 ID를 1씩만 올렸습니다.

사용가능LIMIT 2,1대신에WHERE row_number() = 3.

설명서에서 설명하는 바와 같이 첫 번째 인수는 반환할 첫 번째 행의 오프셋을 지정하고 번째 인수는 반환할 최대 수를 지정합니다.

0을 기준으로 하는 지수임을 명심하세요.따라서 줄 번호 n을 원한다면 첫 번째 인수는 n-1이어야 합니다.두 번째 인수는 항상 1입니다. 한 행만 원하기 때문입니다.예를 들어 표의 행 번호 56을 원하는 경우customer:

SELECT * FROM customer LIMIT 55,1

그런 행은 선택할 수 없습니다.값이 3인 필드를 지정해야 합니다.

비교 중인 필드가 다음과 같다면 다음과 같은 쿼리가 작동합니다.id

select * from customer where `id` = 3
SET @customerID=0;
SELECT @customerID:=@customerID+1 AS customerID
FROM CUSTOMER ;

이와 같이 SQL에서 데이터셋을 가져와 자바 데이터 구조(List 등)에 채운 다음 필요한 정렬을 할 수 있습니다.(아마도 유사한 인터페이스의 도움으로)

SQL 테이블은 기본적으로 순서가 지정되지 않으며, 순서가 지정되지 않은 행 집합에서 n번째 행을 요청하는 것은 ORDER BY를 지정하지 않는 한 매번 다른 행을 반환할 수 있으므로 의미가 없습니다.

select * from customer order by id where row_number() = 3

(때로는 MySQL 테이블이 내부 순서와 함께 표시되기도 하지만 이 동작에 의존할 수는 없습니다.)그러면 사용할 수 있습니다.LIMIT offset, row_count, 0 기반 오프셋을 사용하여 행 번호 3이 오프셋 2가 되도록 합니다.

select * from customer order by id
limit 2, 1

또는 사용할 수 있습니다.LIMIT row_count OFFSET offset:

select * from customer order by id
limit 1 offset 2

테이블에 자동 생성된 id 필드를 추가하고 이 id로 선택할 수 있습니다.

SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = 3;

테이블은 AUTO_INCREMPATION 특성을 이상적으로 가지는 고유한 ID 필드를 사용하여 작성해야 합니다.예:

CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
PRIMARY KEY (P_Id)
)

그러면 다음을 통해 이 표의 세 번째 레코드에 액세스할 수 있습니다.

SELECT * FROM Persons WHERE P_Id = 3

언급URL : https://stackoverflow.com/questions/10457458/select-specific-row-from-mysql-table

반응형