0

我们正在开发一个项目,该项目将图像加载到表格中,并为它们提供项目编号、图像大小、图像链接。现在我们需要将该表与我们的库存表合并。库存表每个项目可以有 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 列的大桌子。项目编号、图像大小、图像链接。

样本数据: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
4

1 回答 1

0

你不能在查询中IF到处乱跑。有条件地设置列的方式是:SETUPDATE

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 */

我不明白你更新的具体逻辑,但希望这足以让你将你想要的东西翻译成正确的语法。如果没有,请将更新后的查询添加到问题中,我们会尽力帮助您。

于 2013-06-27T21:01:29.523 回答