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
'sourcecode' 카테고리의 다른 글
양식 데이터 다중 부분/양식 데이터에서 경계를 가져오거나 설정하는 방법 - 각도 (0) | 2023.10.05 |
---|---|
iOS Swift에서 이미지에 텍스트를 추가하려면 어떻게 해야 합니까? (0) | 2023.10.05 |
moment.js 24h 형식 (0) | 2023.09.25 |
Swift 설명서 코멘트 사용방법 (0) | 2023.09.25 |
Git에서 무시된 디렉터리의 하위 디렉터리 무시 (0) | 2023.09.25 |