我在数据库中创建了一个包含如下数据的表:
现在我编写了一个查询,通过合并名称和电子邮件字段来更新联系人字段:
UPDATE MyContacts SET contact=(SELECT name||'--'||email FROM MyContacts);
这里的问题是在执行查询后表格如下:
为什么会这样?在oracle我从未遇到过这个问题。请帮我。谢谢
答案 0 :(得分:2)
现在你没有指定正确的行来检索值。尝试这样的事情:
UPDATE MyContacts SET contact = name||'--'||email;
编辑:很高兴它有效。您的第一个问题是您的子选择使用没有WHERE子句的SELECT语句(SELECT name||'--'||email FROM MyContacts
将返回3行)。一个可能的解决方案是让SQLite抛出一个错误并说你试图将一个列设置为一个返回多行的表达式的结果:我用MySQL和SQL看过这个服务器。但是,在这种情况下,SQLite似乎只使用返回的第一个值。但是,您的第二个错误随之而来:因为您没有使用WHERE子句缩小UPDATE语句,它会使用返回的第一个值来更新每一行,这就是您所看到的。