我正在尝试通过检查两个连接表来更新列的状态。即使我没有得到一个错误。柱状图没有更新。我想要获取通用的块图id,看看是否有事务与或容器匹配。如果有事务但没有容器,则需要将其标记为P。
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语句时。查询似乎是正确的。
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。
这个查询似乎起作用了:
这个查询起作用了:
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条件的顺序。对此有什么解释吗?
发布于 2012-03-30 04:48:38
我怀疑连接的括号/位置。尝试如下设置:
UPDATE
Table1
SET
Table1
. Field1 = StagingTable . Field1
FROM
Table1
INNER JOIN StagingTable
ON Table1 . Field2 = StagingTable . Field2
WHERE
StagingTable . Field3 IS NOT NULL 发布于 2012-03-30 04:47:35
我建议重新构建UPDATE语句,使其具有嵌入子SELECT。更新通用集合lotstatus =(SELECT...哪里..。)
https://stackoverflow.com/questions/9932666
复制相似问题