찾다

 >  Q&A  >  본문

Mysql에서는 다른 열을 기반으로 테이블에 여러 열을 일괄 추가합니다.

<p>3개의 열이 있는 테이블이 있습니다. 각 ID에는 최대 400개의 <code>index</code> 값이 있습니다. 인덱스 수에 따라 열을 추가하고 싶습니다. 제가 제공한 예에서는 4개의 인덱스가 있고 테이블에 4개의 열을 추가했습니다. 제가 가지고 있는 테이블은 다음과 같습니다. </p> <pre class="brush:php;toolbar:false;"> 테이블 만들기 buy_sell (id int, idx varchar(255), Sell float(2, 1)); buy_sell(id, idx, Sell) 값에 삽입('1', 'a', '4'); buy_sell(id, idx, Sell) 값에 삽입('1', 'b', '6'); buy_sell(id, idx, Sell) 값에 삽입('1', 'c', '8'); buy_sell(id, idx, Sell) 값에 삽입('1', 'd', '9'); buy_sell(id, idx, Sell) 값에 삽입('3', 'b', '1'); buy_sell(id, idx, Sell) 값에 삽입('3', 'c', '2'); buy_sell(id, idx, Sell) 값에 삽입('2', 'a', '5'); buy_sell(id, idx, Sell) 값에 삽입('2', 'b', '7'); buy_sell(id, idx, Sell) 값에 삽입('2', 'd', '5'); SELECT * FROM buy_sell;</pre> <p>결과는 다음과 같습니다.</p> <테이블 클래스="s-테이블"> <머리> <tr> <번째> ID <번째>idx 판매용</th> </tr> </머리> <본문> <tr> <td>1</td> <td>a</td> <td>4.0</td> </tr> <tr> <td>1</td> <td>b</td> <td>6.0</td> </tr> <tr> <td>1</td> <td>c</td> <td>8.0</td> </tr> <tr> <td>1</td> <td>d</td> <td>9.0</td> </tr> <tr> <td>3</td> <td>b</td> <td>1.0</td> </tr> <tr> <td>3</td> <td>c</td> <td>2.0</td> </tr> <tr> <td>2</td> <td>a</td> <td>5.0</td> </tr> <tr> <td>2</td> <td>b</td> <td>7.0</td> </tr> <tr> <td>2</td> <td>d</td> <td>5.0</td> </tr> </tbody> </테이블> <p>예를 들어 id=1의 경우 여기에는 4개의 인덱스(a, b, c, d)가 있고 0이 아닌 4개의 열이 있습니다.id = 3의 경우 두 개의 인덱스(b, c)가 있고 0이 아닌 두 개의 열이 있으므로 첫 번째 열에 0을 입력하고 두 번째 열에 1을 입력하고 세 번째 열에 2를 배치합니다. 등등. 제가 원하는 테이블은 다음과 같습니다. </p> <테이블 클래스="s-테이블"> <머리> <tr> <번째> ID <번째> 1번째 매도 2번째 매도</th> <번째> 3개 판매 4번째 매도</th> </tr> </머리> <본문> <tr> <td>1</td> <td>4</td> <td>6</td> <td>8</td> <td>9</td> </tr> <tr> <td>3</td> 0 <td>1</td> <td>2</td> 0 </tr> <tr> <td>2</td> <td>5</td> <td>7</td> 0 <td>5</td> </tr> </tbody> </테이블> <p>많은 것을 검색하고 <code>Group_concat</code>, <code>JSON_ARRAYAGG</code> 등을 시도했지만 해결책을 찾지 못했습니다. 내가 무엇을해야 하나? </p>
P粉336536706P粉336536706445일 전489

모든 응답(1)나는 대답할 것이다

  • P粉302484366

    P粉3024843662023-08-29 09:19:47

    SQL 언어에는 데이터를 보기 전에 쿼리 컴파일 시 결과의 열 수를 파악하기 위한 매우 엄격한 요구 사항이 있습니다. 원하는 열 수를 결정하기 위해 데이터를 살펴봐야 하는 경우에는 (잠재적으로 위험할 수 있는) 동적 SQL만 사용할 수 있으며, 여기에는 세 단계가 필요합니다.

    1. 쿼리를 실행하여 필수 열에 대한 정보를 찾으세요.
    2. 1단계의 결과를 사용하여 새 SQL 문을 동적으로 작성합니다.
    3. 2단계의 SQL을 실행합니다.

    이 경우 필요한 열 수는 알 수 없으며 "최대 400개 열"이라는 것만 알 수 있습니다. 이를 염두에 두고 다음과 같은 코드를 볼 수 있습니다.

    으아악

    예, 쿼리의 가능한 모든 열에 대해 무언가를 지정해야 합니다. 이것은 또한 귀하의 sell值都大于0。如果你的值可能是正数和负数的混合,你可以尝试使用SUM()而不是MAX()를 가정합니다.

    이 접근 방식은 관계형 데이터베이스 뒤에 있는 설정된 이론 원칙에도 직접적으로 위배되므로 실제로는 클라이언트 코드나 보고 도구가 데이터를 중심으로 회전하도록 하는 것이 더 좋습니다.

    회신하다
    0
  • 취소회신하다