2017-08-30 38 views
0

我用这个查询:如何插入3个汉字是从另一列相同表的MySQL

SELECT 
    nipk, 
    nipk_urut 
FROM db_duk.tb_kontrak; 

INSERT INTO db_duk.tb_kontrak (nipk_urut) 
SELECT RIGHT(db_duk.tb_kontrak(nipk), 3) 
FROM db_duk.tb_kontrak; 

但我得到了以下错误:

1305 FUNCTION db_duk.tb_kontrak does not exist. 

回答

1

以下语法应工作:

INSERT INTO db_duk.tb_kontrak (nipk_urut) 
SELECT RIGHT(nipk, 3) 
FROM db_duk.tb_kontrak; 

但我不知道这是否合乎逻辑。如果您打算取代只用前三个字母的每个值,那么你就不是想做一个更新,这样的事情:

UPDATE db_duk.tb_kontrak 
SET nipk_urut = RIGHT(nipk, 3) 
-- WHERE <some condition> 

更新:

从您的意见这听起来像你想创建一个新的列nipk_urut,然后用已有的nipk列的最后3个字符填充它。您可以尝试类似以下内容的语句来创建此列:

ALTER TABLE db_duk.tb_kontrak ADD COLUMN nipk_urut VARCHAR(50); 

然后,执行上述UPDATE来填充新列。

+0

感谢@Tim的帮助,但它仍然无法正常工作。 – F4DHL1

+0

'但它仍然无法正常工作...... _什么不工作?你需要告诉我们问题是什么。 –

+0

当我使用'INSERT INTO db_duk.tb_kontrak(nipk_urut)SELECT RIGHT(nipk,3)FROM db_duk.tb_kontrak;'显示另一个错误代码1364字段'nipk'没有默认值。当我使用'UPDATE db_duk.tb_kontrak SET nipk = RIGHT(nipk,3)'显示错误代码1175时,您正在使用安全更新模式并且... – F4DHL1

相关问题