首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是正确的SQL语法?

什么是正确的SQL语法?
EN

Stack Overflow用户
提问于 2018-06-05 08:45:36
回答 1查看 57关注 0票数 1

我正在努力解决Laravel Eloquent查询中的SQL语法问题。因此,我直接回到了根目录,并尝试使用简单的SQL进行查询。我被难住了。我不是专家,但这让我很困惑。

我已经看过Update with Join in SQLite的帖子了,但我认为其中一个更多的是关于连接的问题。

我在SQLLite上测试了这一点,它肯定代表了SQL本身?

两个表:说明和知识。我想根据(最新的)说明更新Knowns中的一个专栏。做好这件事,我就可以自己解决剩下的问题(我希望!)。

代码语言:javascript
复制
-- This works fine
Select instructions.rowid from instructions 
where instructions.EngagementTitle not null


-- This doesn't
UPDATE knowns 
SET    EngagementTitle = instructions.EngagementTitle
WHERE  id IN (
  SELECT knowns.id 
  FROM   knowns 
  INNER JOIN instructions 
  ON knowns.reference = instructions.reference
) 

错误消息

代码语言:javascript
复制
no such column: instructions.EngagementTitle: 

UPDATE knowns 
SET    EngagementTitle = instructions.EngagementTitle 
WHERE  id IN (
  SELECT knowns.id 
  FROM   knowns 
  LEFT JOIN instructions 
  ON knowns.reference = instructions.reference
) 

这两个表都检查了列的三元组。

代码语言:javascript
复制
`EngagementTitle` varchar NOT NULL

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 09:05:36

代码语言:javascript
复制
UPDATE knowns 
SET    EngagementTitle = instructions.EngagementTitle 
...

instructions表在这里不是“已知的”,只有knowns。表表达式的作用域仅为“向下”。您可以在子查询中使用超级查询中引入的表,但反之亦然。

尝试使用子选择:

代码语言:javascript
复制
UPDATE knowns
       SET engagementtitle = (SELECT instructions.engagementtitle
                                     FROM instructions
                                     WHERE instructions.reference = knowns.reference)
       WHERE EXISTS (SELECT *
                            FROM instructions 
                            WHERE instructions.reference = knowns.reference);

我还把你的WHERE换成了EXISTS。我猜这就是你真正想要的。它只会更新instructions中存在条目的knowns中的行。按照您的方式,在对IN的子查询中使用LEFT JOIN时,您只是更新了所有行,因为LEFT JOIN包含来自左表的所有行,因此来自knowns的所有ID都包含在结果中(您可能需要一个INNER JOIN,这是可行的)。

但请注意,对于knowns中的一行,instructions中的条目不能超过一个,这样才能正常工作。我默默地认为情况就是这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50690564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档