首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql 3表与update连接

mysql 3表与update连接
EN

Stack Overflow用户
提问于 2012-03-30 04:04:55
回答 2查看 1.2K关注 0票数 2

我正在尝试通过检查两个连接表来更新列的状态。即使我没有得到一个错误。柱状图没有更新。我想要获取通用的块图id,看看是否有事务与或容器匹配。如果有事务但没有容器,则需要将其标记为P。

代码语言:javascript
复制
UPDATE (general
LEFT JOIN 
transactions 
ON 
general.blockplotid=transactions.blockplotid)
LEFT JOIN 
container 
ON 
general.blockplotid=container.blockplotid
SET general.lotstatus = 'P'
WHERE general.lotstatus != 'U' AND
transactions.id_transaction IS NOT NULL AND
container.id_container IS NULL

总而言之,我有3个表。我只想更新一个表中的一列。我想检查其他两个表中的值,它们的值取决于设置值。这三个表通过主键与外键连接。

当我执行双联接select语句时。查询似乎是正确的。

代码语言:javascript
复制
SELECT transactions.blockplotid AS blockplotid_2, container.blockplotid AS blockplotid_1, general.blockplotid, general.lotstatus, container.id_container, transactions.id_transaction
FROM ((general LEFT JOIN transactions ON general.blockplotid=transactions.blockplotid) LEFT JOIN container ON general.blockplotid=container.blockplotid)
ORDER BY general.blockplotid ASC

然而,看起来update的连接不像select。

这个查询似乎起作用了:

这个查询起作用了:

代码语言:javascript
复制
UPDATE ((general LEFT JOIN transactions ON transactions.blockplotid=general.blockplotid) LEFT JOIN container ON container.blockplotid=general.blockplotid)
SET general.lotstatus='P'
WHERE general.blockplotid!='U'  AND container.id_container is null  AND transactions.id_transaction is not null 

这里的区别在于is NOT NULL的情况以及where条件的顺序。对此有什么解释吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-30 04:48:38

我怀疑连接的括号/位置。尝试如下设置:

代码语言:javascript
复制
UPDATE

Table1

SET

Table1

. Field1 = StagingTable . Field1

FROM

Table1

INNER JOIN StagingTable
ON Table1 . Field2 = StagingTable . Field2
WHERE

StagingTable . Field3 IS NOT NULL 
票数 2
EN

Stack Overflow用户

发布于 2012-03-30 04:47:35

我建议重新构建UPDATE语句,使其具有嵌入子SELECT。更新通用集合lotstatus =(SELECT...哪里..。)

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

https://stackoverflow.com/questions/9932666

复制
相关文章

相似问题

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