我的mysql数据库中有一个alphaNumeric列(invoice_no
),其值为INV0001
和许多值,如INVI000040
,现在我又增加了一列{{1}所以我想将invoice_prefix
的整数和字母部分分隔成invoice_no
和invoice_no
,所以我写了一个查询来提取invoice_prefix
<的字母数字部分/ p>
invoice_no
并且此查询也提供了正确的输出,但是当我尝试更新具有此类invoice_no的所有列时 为此我写了这样的查询
SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE ( REPLACE(x.invoice_no, '9', ''), '8', ''), '7', ''), '6', ''), '5', ''), '4', ''), '3', ''), '2', ''), '1', ''), '0', '') as alpha_only FROM user_invoices as x where x.id = 1 and x.invoice_no REGEXP '^[A-Z]'
但是当我运行此查询时,我收到此错误
每个派生表都必须有自己的别名
我无法理解我在做错的地方
答案 0 :(得分:0)
为什么使用子查询?根据您的描述,这应该做你想要的:
update user_invoices ui
set ui.invoice_prefix = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(ui.invoice_no, '9', ''), '8', ''), '7', ''), '6', ''), '5', ''), '4', ''),
'3', ''), '2', ''), '1', ''), '0', '')
where ui.invoice_no regexp '[0-9]';