如果(B)= 0,则从(A)更新(B)?

时间:2015-12-27 02:38:58

标签: mysql

我在学校学习这个,我很困惑。我尝试在单个数据库中的单个表中的列之间复制信息,所有这些都是本地的。

基本上:

(我需要循环并更新所有记录)

UPDATE `my_records` 
SET `realname` = `name` 
WHERE `realname` = 0;

SELECT * FROM `my_records` SET `realname` = `name` WHERE `realname` = 0;

它一直告诉我我有语法错误。

我现在明白为什么他们要我学习这个。表格中的每一行都是不同的,因此当我更新所有列时,某些行会发生变化而不应该是因为这不是我之后的最终结果。我可以试着举个例子,但这对我来说很困惑。

DB - >表 - >第1行 - 保留此人的姓名 - >第2行 - 保留图片

的人
  • 两件事都有一个名字(例如Row 1 David,Row 2 Flower.JPG)

所以我猜他们希望我找到一种方法来排除更新' real_name'第2行上的列,其中图像是JPG,GIF或PNG。

我认为更新表时他们正在寻找的最终结果是:

第1行' David' '大卫' 第2行' flower.jpg'

然后,这会一遍又一遍地循环播放所有记录。

1 个答案:

答案 0 :(得分:0)

您需要使用UPDATE代替SELECTSELECT语句只返回数据,不会修改数据。

因此,要返回记录,您将在下一步中更新:

SELECT `realname`, `name` FROM `my_records` WHERE `realname` = 0;

然后更新这些记录:

UPDATE `my_records` SET `realname` = `name` WHERE `realname` = 0;

请注意,此查询将更新整个表格,将realname的值等于0的任何行设置为同一行name的值柱。

其他一些可能有用的陈述:

UPDATE `my_records` SET `realname` = `name` WHERE `realname` = '';

这会影响realname相当于'空字符串'

的所有行
UPDATE `my_records` SET `realname` = `name` WHERE `realname` IS NULL;

会影响realnameNULL

的所有行
相关问题