2
나는이 다음 표 :INSERT INTO..SELECT..ON 중복 키 모호한 식별자
+---------------------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+---------------------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| bright_promotion_earnings | 0 | promoter_2 | 1 | promoter | A | 2 | NULL | NULL | YES | BTREE | |
| bright_promotion_earnings | 0 | promoter_2 | 2 | generation | A | 4 | NULL | NULL | | BTREE | |
| bright_promotion_earnings | 0 | promoter_2 | 3 | payed | A | 4 | NULL | NULL | | BTREE | |
+---------------------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
3 rows in set (0.00 sec)
나는 지금 : (발기인이 세대가, 유료) 하나의 고유 키가
mysql> SELECT * FROM `bright_promotion_earnings`;
+----+----------+------------+----------+-------+
| id | promoter | generation | turnover | payed |
+----+----------+------------+----------+-------+
| 1 | 4 | 1 | 10 | 0 |
| 3 | 4 | 5 | 100 | 0 |
| 4 | 4 | 3 | 10000 | 1 |
| 5 | 4 | 3 | 200 | 0 |
+----+----------+------------+----------+-------+
4 rows in set (0.00 sec)
있다
유료 = 1 (존재하는 경우)로 동일한 항목을 업데이트하여 지불 한 발기인에 대해 모든 수익을 표시하려고합니다. 이 지불로 내가 프로모터 4의 이익을 표시하고 싶어한다면은 테이블과 같아야합니다 것입니다 :
+----+----------+------------+----------+-------+
| id | promoter | generation | turnover | payed |
+----+----------+------------+----------+-------+
| 4 | 4 | 3 | 10200 | 1 |
| 6 | 4 | 5 | 100 | 1 |
| 7 | 4 | 1 | 10 | 1 |
+----+----------+------------+----------+-------+
3 rows in set (0.00 sec)
이 (사소한 삭제없이) 내 현재의 접근 방식 :
INSERT INTO
bright_promotion_earnings
(
promoter,
generation,
turnover,
payed
)
SELECT
commission.promoter,
commission.generation,
commission.turnover as turnover2,
'1' as payed
FROM
bright_promotion_earnings as commission
WHERE
promoter=4
AND payed=0
ON DUPLICATE KEY UPDATE turnover=turnover+turnover2;
그러나 MySQL은 나에게 그 매출을 말하는 계속이 모호 :
#1052 - Column 'turnover' in field list is ambiguous
누구를합니까 내가 삽입하려는 테이블의 별명을 지정할 수 없으므로 힌트를 얻으십시오.
mysql이 열을 식별 할 수 있도록 이름에 삽입하는 테이블을 어떻게 만들 수 있습니까?
미리 감사드립니다.
예. 알고 있습니다. 정확히 내 문제입니다. 질문 : mysql이 열을 식별 할 수 있도록 이름을 삽입하는 테이블을 어떻게 만들 수 있습니까? –
이 작동하지 않습니까? 중복 키 업데이트 ON bright_promotion_earnings.turnover = bright_promotion_earnings.turnover + commission.turnover2; – Zed
네, 정말 고마워했습니다. –