组合 SQL 查询,基于计算连接表
Posted
技术标签:
【中文标题】组合 SQL 查询,基于计算连接表【英文标题】:Combine SQL queries, joining tables based on a calculation 【发布时间】:2013-12-04 14:18:18 【问题描述】:我正在尝试使我的 SQL 更优雅和/或减少我需要运行的查询数量。我有一组两个查询:
-
第一个查询影响了我的原始表,更新了一个缩写
记录来自描述记录的信息。
第二个查询
根据
缩写记录。
有没有办法把这些写成一个 查询?
简化查询 1:
UPDATE [tblManipulateD]
SET [tblManipulateD].[abbreviation] = RIGHT([tblManipulateD].[description],3)
WHERE [tblManipulateD].[description] LIKE “*abbrev:*";
简化查询 2
UPDATE [tblManipualteD]
LEFT JOIN [tblStorage] ON ([tblManipulateD].[abbreviation] = [tblStorage].[storage abbreviation]
SET [tblManipualteD].[product code] = [tblStorage].[storage product]
WHERE [tblManipulateD].[description] LIKE “*abbrev:*";
再次,我想知道是否有一种方法(在一个查询中)根据主表的计算将辅助表连接到主表。感谢您的帮助和/或洞察力!
【问题讨论】:
【参考方案1】:是的,您可以加入描述列的最后 3 个字符:
UPDATE [tblManipulateD]
SET [tblManipulateD].[abbreviation] = RIGHT([tblManipulateD].[description],3),
[tblManipualteD].[product code] = [tblStorage].[storage product]
FROM [tblManipulateD]
LEFT JOIN [tblStorage] ON RIGHT([tblManipulateD].[description],3) = [tblStorage].[storage abbreviation]
WHERE [tblManipulateD].[description] LIKE “*abbrev:*";
【讨论】:
MS Access 不喜欢UPDATE
查询的语法。在直接尝试了您的语法之后,我尝试将LEFT JOIN
行直接放在UPDATE
行之后,并删除FROM
行,以便它与我已经编写的一些可以工作的查询的语法相匹配。不幸的是,这两种尝试都没有奏效。你还有其他建议吗?也许 MS Access 无法处理这种类型的操作。
天哪……我的问题是一些拼写错误!我能够让您的代码正常工作(加入描述列的最后三个字符),但我确实必须像上面提到的那样重新调整加入短语。非常感谢!以上是关于组合 SQL 查询,基于计算连接表的主要内容,如果未能解决你的问题,请参考以下文章
学习记录:Leetcode175.组合两张表以及sql四种连接