|
1
22
在更一般的情况下,可能有数百个映射到每个新值,您将创建一个新值和旧值的单独表,然后在update语句中使用该表。在SQL的一种方言中:
这两个select语句都至关重要。第一个是一个相关的子查询(不一定很快,但如果映射器表有数千行,则比大多数替代查询都快),它从对应于旧值的映射表中提取新值。第二种方法确保只修改映射表中具有值的行;这一点非常重要,否则,对于没有映射项的行(以及在开始之前正常的记录),标题将设置为空。 对于一些备选方案,案例操作是可以的。但是,如果要执行成百上千或数以百万计的映射,那么很可能会超出DBMS中SQL语句长度的限制。 |
|
|
2
23
您可以使用一个语句和多个case语句
当然,这将导致对每个记录进行写操作,对于索引,这可能是一个问题,因此您只能筛选出要更改的行:
这将减少对表的写入次数。 |
|
|
3
9
认真研究乔纳森的回答。
他的初始版本需要对mapper表进行大量的读取。 |
|
|
4
3
如果转换和示例一样简单,您可以通过一点字符串操作来进行更新:
你想要那样的东西吗? |
|
|
5
0
或
|