美好的一天,
让我们假设我们有一个表,其值分组,我们想要为每个组仅改变一行。让我们举一些例子,这是开始的情况:
ID | CODE | DEFAULT
-----+----------+-----------
1 | 1234 | 0
2 | 1234 | 0
3 | 1234 | 0
4 | 5678 | 0
5 | 5678 | 0
6 | 7777 | 0
7 | 8888 | 0
8 | 8888 | 0
9 | 8888 | 0
我们要更新DEFAULT
,但每个CODE
只更新一次:
ID | CODE | DEFAULT
-----+----------+-----------
1 | 1234 | 0
2 | 1234 | 1
3 | 1234 | 0
4 | 5678 | 1
5 | 5678 | 0
6 | 7777 | 1
7 | 8888 | 0
8 | 8888 | 0
9 | 8888 | 1
我们更新哪一个并不重要,我们每个CODE
只需要一个。
实际上我只能在SELECT DISTINCT
进行思考,然后使用循环取SELECT ... LIMIT 1
然后,如果有结果,UPDATE
但它确实是一个肮脏的解决方案..我确信可以用一个(或几个)查询来完成......
任何想法?