我有一个两列的表格,上面有客户的ID和优惠券。我想通过将外部数据列表中的凭证分配给每个客户的id来填写“优惠券”列。此外,一旦分配了代码,就不能再次将其分配给其他客户。
你能帮我写一个sql查询吗?
Table:
| Customer ID | Coupon |
| -------- | -------------- |
| 100 | |
| 200 | |
| 300 | |
Data list:
| Voucher ID | Voucher |
| -------- | -------------- |
| 1 | j2h3h2 |
| 2 | hfd7s8 |
| 3 | fsdfs72 |
Final result
| Customer ID | Coupon |
| -------- | -------------- |
| 100 | j2h3h2 |
| 200 | hfd7s8 |
| 300 | fsdfs72 |
1条答案
按热度按时间kx7yvsdv1#
正如您所评论的,您正在使用mysql 8,我将使用公共表表达式和
ROW_NUMBER()
创建按顺序编号的行。然后,我可以将它们连接回正在更新的表,并相互连接,以便将新的凭证id分配给没有凭证id的客户。
我也会用这个词
voucher
,因为您似乎互换使用了代金券和优惠券。工作演示:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=29875e64b3de3559ceea20d85d222f9b