2010-09-16 65 views
4

我需要复制一行。
复制行,我需要改变的值,这个值+“复制” 我做了这个sql..but它不是工作..INSERT INTO SELECT,复制值+'字符串'

INSERT INTO prizes_i18n (
    lang_id 
    , translation_name 
    , translation_desc 
    , name 
    , lang_path) 
SELECT prizes_s.lang_id 
     , prizes_s.translation_name + 'copy' 
     , prizes_s.translation_desc 
     , prizes_s.name 
     , prizes_s.lang_path 
FROM prizes_i18n prizes_s 
WHERE prizes_s.lang_id = 637; 

没有+“复制”其作品。 像这样prizes_s.translation_name + 'copyy',但它不工作。

+3

当你说“它不工作”,你是什么意思?它会给出错误吗?它是否默默地失败? – 2010-09-16 13:29:19

+0

它如何失败?你得到一个错误,或者你没有得到你想要的结果 – Murph 2010-09-16 13:30:54

+0

错误的双值结果的值..只接受'复制' - 像字符串或列名称,一起合并它 - 不工作 – Oyeme 2010-09-16 13:31:46

回答

9

this previous question你使用MySQL吗?如果是这样,则使用concat作为字符串连接。

SELECT 'foo' + 'bar' ... 

在MySQL中返回0这将解释有关双打您看到的错误。

INSERT INTO prizes_i18n (lang_id, translation_name, translation_desc, 
          name, lang_path) 
SELECT prizes_s.lang_id, 
    concat(prizes_s.translation_name, 'copy'),  
    prizes_s.translation_desc, prizes_s.name, prizes_s.lang_path 
FROM prizes_i18n prizes_s WHERE prizes_s.lang_id = 637; 
+0

你在那之前就到了那里。我认为大多数DBMS口味都有CONCAT() – APC 2010-09-16 13:31:31

+0

谢谢!!!!!有用!! – Oyeme 2010-09-16 13:35:09

1

随机猜测...

prizes_s.translation_name + ' Copy'是translation_name太长,你会得到string or binary data would be truncated错误?

它也是SQL Server吗?是translation_name charvarchar

1

INSERT INTO prizes_i18n
(LANG_ID,translation_name,translation_desc,名称,lang_path) 选择 prizes_s.lang_id ,CONCAT(prizes_s.translation_name, '复制') ,prizes_s.translation_desc ,prizes_s.name ,prizes_s.lang_path
FROM prizes_s WHERE prizes_s.lang_id = 637;

另外我想,在你的FROM子句中,prizes_i18n表是不必要的。

+0

只有一张桌子有'prizes_i18n'。它被别名为'prizes_s' – 2010-09-16 13:45:30

+0

是的你是对的! – Oyeme 2010-09-16 13:47:55