我需要更改每行中的两列,其中" Color"列以特定值开始"叫喊"
我的表是:
+------+----------+----------+
| Name | Color | Quantity |
+------+----------+----------+
| A | <yell> U | 2 |
+------+----------+----------+
| B | Blue | 1 |
+------+----------+----------+
| C | Red | 4 |
+------+----------+----------+
| D | <yell> A | 2 |
+------+----------+----------+
对于这个示例表,我有2行,其中列Collor以字符串&#34; Yell&#34;开头。 。我需要将该字段更改为黄色并将数量=数量-1更改为列&#34;数量&#34;
我只需要匹配Collor字符串的前6个字符。之后的内容可能因行而异。
所以我的表就是:
+------+--------+----------+
| Name | Color | Quantity |
+------+--------+----------+
| A | Yellow | 1 |
+------+--------+----------+
| B | Blue | 1 |
+------+--------+----------+
| C | Red | 4 |
+------+--------+----------+
| D | Yellow | 1 |
+------+--------+----------+
你能帮帮我吗?我尝试过合并,但我做得不对。
答案 0 :(得分:0)
这样的东西?
update TABLENAME a
set a.color = 'Yellow',
a.quantity = a.quantity - 1
where exists (select count(*)
from TABLENAME t
where substr(t.color, 1, 6) = substr(a.color, 1, 6)
group by (substr(t.color, 1, 6))
having count(*) > 1)
答案 1 :(得分:0)
这实际上只需要直接更新,至少直接指定。
update tablename
set color = 'Yellow';
, quantity = quantity-1
where substr(color,1,6) = '<yell>' ;
但是,您可能需要调整where子句中的字符串。因为它会在这里更新颜色值以及其他一些东西,但不会更新值&#39;黄色&#39;也没有&#39;&#39;,也没有其他变化。