가정하자 나는 MySQL의이 모양을 MyTable라는 테이블이 각 Id
, 나는 형 C
그와 함께 새 행을 삽입 할,삽입 새 행
+----+------+-------+
| Id | Type | Value |
+----+------+-------+
| 0 | A | 1 |
| 0 | B | 1 |
| 1 | A | 2 |
| 1 | B | 3 |
| 2 | A | 5 |
| 2 | B | 8 |
+----+------+-------+
과 Value
은 같은 Id
의 행에 대해 A
및 B
값의 합계입니다. 이 테이블의 기본 키는 (Id, Type)
이므로 ID, 유형 쌍이 중복되지는 않습니다.
내가이 쿼리에 원하는 행을 만들 수 있습니다
SELECT MyTable_A.Id AS Id, 'C' AS Type, (A_Val + B_Val) AS Value FROM
(SELECT Id, Value AS A_Val FROM MyTable WHERE Type='A') AS MyTable_A
JOIN (SELECT Id, Value AS B_Val FROM MyTable WHERE Type='B') AS MyTable_B
ON MyTable_A.Id = MyTable_B.Id
기부 :
+----+------+-------+
| Id | Type | Value |
+----+------+-------+
| 0 | C | 2 |
| 1 | C | 5 |
| 2 | C | 13 |
+----+------+-------+
하지만 질문은 : 나는 삽입이 결과를 사용합니까 어떻게 C
행 붙이 생성 MyTable
에?
쿼리를 사용하여이 작업을 수행하는 비교적 간단한 방법이 있습니까? 아니면 저장 프로 시저를 작성해야합니까? 후자의지도가 도움이된다면, 나는 그들에게 너무 잘 정통하지 않습니다.
이렇게하면 데이터가 비정형 화됩니다. 왜 이걸하고 싶어? A와 B가 바뀌면 어떻게 될까요? 누군가가 C를 수정할 수 있습니까? –
이것이 필요한 이유는'C'가'A + B'로 정의되어 있고 테이블의 모든 항목이 현재'A'와'B' 값을 가지고 있기 때문에'C' 만 알려진 미래 항목이있을 것입니다 'A'와 'B'구성 요소에 대한 분석을 결정할 방법이없는 곳입니다. 이것이 의미하는 바는,'A'와'B' *가 알려진'Id '에 대한 삽입과 업데이트를 위해'C = A + B'를 보장하는 외부 검증 로직을 구현해야한다는 것을 의미합니다. –