Mysql에서는 다른 열을 기반으로 테이블에 여러 열을 일괄 추가합니다.
P粉336536706
2023-08-28 11:03:44
<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>
SQL 언어에는 데이터를 보기 전에 쿼리 컴파일 시 결과의 열 수를 파악하기 위한 매우 엄격한 요구 사항이 있습니다. 원하는 열 수를 결정하기 위해 데이터를 살펴봐야 하는 경우에는 (잠재적으로 위험할 수 있는) 동적 SQL만 사용할 수 있으며, 여기에는 세 단계가 필요합니다.
이 경우 필요한 열 수는 알 수 없으며 "최대 400개 열"이라는 것만 알 수 있습니다. 이를 염두에 두고 다음과 같은 코드를 볼 수 있습니다.
으아악예, 쿼리의 가능한 모든 열에 대해 무언가를 지정해야 합니다. 이것은 또한 귀하의
sell
值都大于0。如果你的值可能是正数和负数的混合,你可以尝试使用SUM()
而不是MAX()
를 가정합니다.이 접근 방식은 관계형 데이터베이스 뒤에 있는 설정된 이론 원칙에도 직접적으로 위배되므로 실제로는 클라이언트 코드나 보고 도구가 데이터를 중심으로 회전하도록 하는 것이 더 좋습니다.