SQL新手,需要查询帮助吗
我有一个自己的数据库表,我正试图为它构造一个看起来足够简单的查询,但我觉得我在某个地方搞砸了,因为结果不是它们应该的结果 我基本上有一张表,如下所示: 表:数据 栏目:SQL新手,需要查询帮助吗,sql,database,Sql,Database,我有一个自己的数据库表,我正试图为它构造一个看起来足够简单的查询,但我觉得我在某个地方搞砸了,因为结果不是它们应该的结果 我基本上有一张表,如下所示: 表:数据 栏目: Row ID Profile Import ID Field ID Product 1 5 Null 5 60 Can 2 0
Row ID Profile Import ID Field ID Product
1 5 Null 5 60 Can
2 0 Null 5 65 Hat
3 0 Null 5 70 Box
4 6 Null 6 60 Fish
我基本上想把第2行中的单词Hat放在第1行的Profile列中,替换那里的null值。我对多行执行此操作
在多行的情况下,我希望使用Profile列并使其与Product列相等。我只希望在ID值与导入ID匹配的行中,以及字段ID为65的行中发生这种情况。在上面的示例中,ID 5与导入ID 5匹配,因此我希望在字段ID为65的情况下获取产品值,并将该值放入ID为5的Profile列中。我的表有9000多行,600行必须以这种方式更改,需要插入各种ID和各种产品
我希望的结果是:
Row ID Profile Import ID Field ID Product
1 5 Hat 5 60 Can
2 0 Null 5 65 Hat
3 0 Null 5 70 Box
4 6 Null 6 60 Fish
我祈祷这是有道理的
我的问题是
更新“数据”
设置“配置文件”=“产品”
其中'ID'='Import ID'和'Field ID'=65
我还尝试了一个子查询
更新“数据”
设置“配置文件”=从“字段ID”=65的数据中选择“产品”
其中'ID'='Import ID'
这不起作用,我只是想知道是否有一些逻辑我错过了。感谢所有能够提供帮助的人,我已经尝试了一段时间来理解这一点…您需要加入数据;比如:
UPDATE d1
SET d1.Profile = d2.Product
FROM [Data] d1 -- dest
INNER JOIN [DATA] d2 -- source
ON d2.[Import ID] = d1.[ID] AND d2.[Field ID] = 65
注意交换了2列…您需要加入数据;比如:
UPDATE d1
SET d1.Profile = d2.Product
FROM [Data] d1 -- dest
INNER JOIN [DATA] d2 -- source
ON d2.[Import ID] = d1.[ID] AND d2.[Field ID] = 65
注意:交换了两列…学习sql时需要记住的几件事: 在列名中使用空格不是一个好主意。虽然它们可能更容易阅读,但这会使您的查询更加困难。大多数数据库根本不允许使用它们,而那些使用不同方法指定查询中的列的数据库 为了解决您的问题,也许您应该尝试将列名括在反勾号“”或方括号[]中
无论如何,不要考虑一个空格,请考虑下划线。 记住这一点,您还应该记住不要将列名加引号。差不多
从“字段ID”=65的数据中选择“产品” 由于两个原因不起作用: a。选择引用文本将返回该引用文本。如果where子句返回两行,则返回两次文本“Product” b。在这里,where子句将文本“Field ID”与数字65进行比较,数字65始终为false希望这有助于学习sql时记住以下几点: 在列名中使用空格不是一个好主意。虽然它们可能更容易阅读,但这会使您的查询更加困难。大多数数据库根本不允许使用它们,而那些使用不同方法指定查询中的列的数据库 为了解决您的问题,也许您应该尝试将列名括在反勾号“”或方括号[]中
无论如何,不要考虑一个空格,请考虑下划线。 记住这一点,您还应该记住不要将列名加引号。差不多
从“字段ID”=65的数据中选择“产品” 由于两个原因不起作用: a。选择引用文本将返回该引用文本。如果where子句返回两行,则返回两次文本“Product” b。在这里,where子句将文本“Field ID”与数字65进行比较,数字65始终为false希望这有帮助看起来这应该是两个单独的表。导入[导入ID]、[字段ID]、产品和数据行、ID、配置文件。看起来这应该是两个单独的表。导入[导入ID]、[字段ID]、产品和数据行、ID、配置文件。