我们正在开发一个项目,将图像加载到表格中,并为它们提供项目编号,图像大小,图像链接。现在我们需要将此表与库存表合并。库存表每个项目可以有10个不同的图片,但在我们的图像表中,我们只有3行。此表中有多个项目编号,每个编号都有不同的图像和大小。我们如何使用table2中的链接更新table1并让它们填写所有10张图片?
update table1
if (imglink is not null)
set
imgsize1 = c.imagesize,
imglink1= c.imageLink
else if (imglink1 is not null)
set
imgsize2 = c.imagesize
imglink2= c.imageLink
else if (imglink2 is not null)
set
imgsize3 = c.imagesize
imglink3 = c.imageLink
else if (imglink3 is not null)
set
imgsize4 = c.imagesize
imglink4 = c.imageLink
else if (imglink4 is not null)
set
imgsize5 = c.imagesize
imglink5 = c.imageLink
else if (imglink5 is not null)
set
imgsize6 = c.imagesize
imglink6 = c.imageLink
else if (imglink6 is not null)
set
imgsize7 = c.imagesize
imglink7 = c.imageLink
else if (imglink7 is not null)
set
imgsize8 = c.imagesize
imglink8 = c.imageLink
else
set
imagesize = c.imagesize
imagelink = c.imageLink
from table2 as c
WHERE c.itemno = i.itemno
我们想要做的事情有意义吗?任何帮助,将不胜感激。提前谢谢。
编辑:我们正在使用MS SQL 2008。 图像表是从我们的一个客户端导入的,这是它给出的格式。只是一个有3列的大桌子。 Itemno,imagesize,imageLink。
示例数据: table1(库存表) -
itemno | imageLink | imageLink1 | imageLink2 | imageLink3 | imageLink4 | imageLink5 | imageLink6 | imageLink7 | imageLink8 | imageLink9
table2(图像表) -
itemno | imageLink | size
itemno | imageLink1 | size
itemno | imageLink2 | size
itemno | imageLink3 | size
itemno | imageLink4 | size
itemno | imageLink5 | size
itemno | imageLink6 | size
itemno | imageLink7 | size
itemno | imageLink8 | size
itemno | imageLink9 | size
答案 0 :(得分:0)
您无法将IF
放在SET
UPDATE
查询中。有条件地设置列的方式是:
SET <colName> = IF(<condition>, <newvalue>, <colName>)
如果条件为真,则更改该值,否则只将当前值分配回列。
要根据另一个表更新一个表,一般语法为:
UPDATE table1 t1
JOIN table2 t2 ON t1.itemno = t2.itemno
SET t1.col1 = <expression which may reference t2>,
t1.col2 = <expression which may reference t2>,
...
WHERE ... /* this clause is optional */
我不了解更新的具体逻辑,但希望这足以让您将所需内容翻译成正确的语法。如果没有,请将更新后的查询添加到问题中,我们会尝试让您前进。