programing

MySQL: 선택문의 임시 열을 자동으로 증가시킵니다.

minecode 2022. 10. 31. 21:26
반응형

MySQL: 선택문의 임시 열을 자동으로 증가시킵니다.

MySQL을 사용하여 select 스테이트먼트에 임시 컬럼을 작성 및 자동 증분하려면 어떻게 해야 합니까?

지금까지의 내용은 다음과 같습니다.

SET @cnt = 0;
SELECT
    (@cnt =@cnt + 1) AS rowNumber,
    rowID
FROM myTable
WHERE CategoryID = 1

반환되는 내용:

+++++++++++++++++++++
+ rowNumber | rowID +
+++++++++++++++++++++
+  (NULL)   |   1   +
+  (NULL)   |   25  +
+  (NULL)   |   33  +
+  (NULL)   |   150 +
+  (NULL)   |   219 +
+++++++++++++++++++++

하지만 나는 다음이 필요하다.

+++++++++++++++++++++
+ rowNumber | rowID +
+++++++++++++++++++++
+  1        |   1   +
+  2        |   25  +
+  3        |   33  +
+  4        |   150 +
+  ...      |   ... +
+++++++++++++++++++++

그러면 다음 행의 연속 번호가 표시됩니다.3.

SELECT
    (@cnt := @cnt + 1) AS rowNumber,
    t.rowID
FROM myTable AS t
  CROSS JOIN (SELECT @cnt := 0) AS dummy
WHERE t.CategoryID = 1
ORDER BY t.rowID ;

결과

| ROWNUMBER | ROWID |---------------------|         1 |     1 ||         2 |    25 ||         3 |    33 ||         4 |   150 |

하지만, 만약 당신이group by선택 문장에서요?개표가 취소됩니다.

이 경우 찾은 솔루션은 nesting select뿐입니다.

SELECT (@cnt := @cnt + 1) AS rowNumber, t.*
from
(select
    t.rowID
FROM myTable 
WHERE CategoryID = 1
ORDER BY rowID) t
CROSS JOIN (SELECT @cnt := 0) AS dummy

이것을 시험해 보세요.

SET @rownr=0;
SELECT @rownr:=@rownr+1 AS rowNumber, rowID
  FROM myTable
  WHERE CategoryID = 1

최신 버전의 MySQL에서는 MySQL Window를 사용할 수 있습니다.http://www.mysqltutorial.org/mysql-window-functions/mysql-row_number-function/

예:

SELECT  ROW_NUMBER() OVER (  ORDER BY productName  ) row_num, 
        productName, msrp 
FROM   products ORDER BY   productName;

이 코드를 사용할 수 있습니다.나는 이것이 더 간단한 해결책이라고 생각한다.

select ROW_NUMBER() OVER (  ORDER BY id  ) AS Seid, id from table1 where id<10

결과:

| Seid | id |

| 1 | 5|

| 2 | 7|

| 3 | 8|

| 4 | 9|

언급URL : https://stackoverflow.com/questions/15930514/mysql-auto-increment-temporary-column-in-select-statement

반응형