mysql 쿼리에서 일련 번호 생성
나는 테이블이 있습니다: student_marks.
marks
-----
44
55
64
98
76
예상 출력:
serial_number|marks
--------------------
1 | 44
2 | 55
3 | 64
4 | 98
5 | 76
mysql 사용자 정의 변수를 사용하면 쿼리를 사용할 수 있습니다.
set @a:=0;select @a:=@a+1 serial_number, marks from student_marks;
사용자 정의 변수를 사용하지 않고 msyql에서 이를 달성할 수 있는 방법이 있습니까?
사용자 정의 변수를 사용하고 싶지 않은 이유에 따라 초기화를 위한 쿼리와 사용을 위한 쿼리 두 개를 사용하지 않기를 원하는 경우 다음을 사용할 수 있습니다.
SELECT @a:=@a+1 serial_number,
marks
FROM student_marks,
(SELECT @a:= 0) AS a;
이 질문에 대한 모범적인 답변은 다음과 같은 모범적인 사례여야 합니다.
SET @count:=0;
SELECT (@count:=@count+1) AS serial_number,
marks
FROM student_marks
열(c5)이 있는 테이블에 숫자 x가 포함되어 있습니다. 같은 행 x를 여러 번 반복하는 sql 식을 필요로 합니다.
내 테이블 A에는 다음이 포함됩니다.
c1 c2 c3 c4 c5
16 1 2 16 3
16 1 2 17 2
16 1 2 18 1
필요한 것은 다음과 같은 것이 필요합니다.
c1 c2 c3 c4 c5 n
16 1 2 16 3 1
16 1 2 16 3 2
16 1 2 16 3 3
16 1 2 17 2 1
16 1 2 17 2 2
16 1 2 18 1 1
나는 다음과 같은 표현으로 그것을 해결했습니다.
SELECT
c1, c2, c3, c4, c5, row_number AS n
FROM
(
SELECT
@curRow := @curRow + 1 AS row_number
FROM
tablea
JOIN (SELECT @curRow := 0) r
WHERE
@curRow < (
SELECT
max(field1)
FROM
tablea
)
) AS vwtable2
LEFT JOIN tablea d ON vwtable2.row_number <= tablea.field1;
mysql 5.6에서 테스트됨:
SELECT
@a:=@a+1 as serial_number,
student.*
FROM
student
join (SELECT @a:= 0) a
추가할 수 있습니다.serial number
다음 쿼리를 사용합니다.
set @counter=0;
SELECT @counter:=@counter+1 as serial_number from <table_name>
출력:
|...............................|
| serial_number | first_name |
|...............................|
| 1 | mojtaba |
| 2 | athena |
| 3 | azin |
| 4 | ava |
| 5 | arash |
|...............................|
추가로 사용하려면where
set @counter=0;
select serial_number from (SELECT @counter:=@counter+1 as serial_number
from <table_name>) as tbl_counter where serial_number > 3
출력:
|...............................|
| serial_number | first_name |
|...............................|
| 4 | ava |
| 5 | arash |
|...............................|
일련번호를 생성하는 간단한 방법을 찾았습니다
select ROW_NUMBER() over (PARTITION by '1') AS serial_number,customer_id from users;
또한 페이지화를 지원합니다.
없어요.하지만 데이터베이스가 아닌 프로그램 쪽에서 serial_number를 생성할 수 있습니다.
다른 쿼리에서 변수를 null로 초기화해야 하므로 위의 답변 중 어느 것도 만족스럽지 않은 것 같습니다.
따라서 아래의 모든 포괄적인 솔루션을 게시합니다.
SELECT ROUND(@a:=@a+1,0) sr_num, t.* from (select @a:=0) initvars, your_table t;
@a:=@a+1 serial_no,
크로스조인(SELECT @a:= 0) ASA
SELECT @a:=@a+1 serial_no, sc.id, sc.name, sc.address, c.country,s.state
FROM oc_table1 sc CROSS JOIN (SELECT @a:= 0) AS a LEFT JOIN oc_table2 .......
ALTER TABLE_name ADD COLUMN sr_nINT UNIQUE NOT NULL AUTO_INCREMENT FIRST;
일련 번호에 대한 열을 만드는 것을 잊어버린 경우를 대비하여 기본 테이블까지 편집할 수 있습니다.또한 이 방법을 사용하여 sr_no 열을 두 개의 다른 열에 추가하고 쉽게 결합할 수 있습니다(또는 두 열을 모두 사용하여 새 테이블을 만들 수도 있습니다).
자동증강장으로 만드는 게 어때요?
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
아니요, 이 숫자들이 들어 있는 열이 없는 한요.
답변이 매우 늦었지만, 두 개의 쿼리를 사용하지 않고 조인을 사용하지 않고 하위 쿼리를 사용하지 않고 순차 ID를 생성하는 것입니다.
SELECT *, (@cnt := if(@cnt IS NULL, 0, @cnt) + 1) AS id FROM table_name;
건배.
언급URL : https://stackoverflow.com/questions/11094466/generate-serial-number-in-mysql-query
'sourcecode' 카테고리의 다른 글
how to toggle attr() in jquery (0) | 2023.10.31 |
---|---|
콘솔에서 프로그램이 실행되는지 확인하는 방법은 무엇입니까? (0) | 2023.10.26 |
Oracle to Excel - PL/SQL 내보내기 절차 (0) | 2023.10.26 |
Laravel이 이미 백엔드로 사용되고 있다면 프론트엔드에서 AngularJs를 사용하는 이유는 무엇입니까? (0) | 2023.10.26 |
Angular를 전개하는 것이 일반적인 선택입니까?바닐라 아파치 HTTP 서버에 JS 앱? (0) | 2023.10.26 |