gpt4 book ai didi

MySQL 子查询将不起作用

转载 作者:行者123 更新时间:2023-11-29 22:08:34 25 4
gpt4 key购买 nike

我在子查询方面遇到问题。在 phpMyAdmin 中,当我输入以下内容时:

SELECT companys.id 
FROM companys
JOIN users
ON users.company = companys.id
WHERE users.id = '$LOGGED_IN_USER'

我得到了返回的数字 1。这是正确的。

然后我测试了:

UPDATE companys 
SET companys.signature = '$SIGNATURE'
WHERE companys.id = 1

这也有效,它用 $SIGNATURE 更新值,其中companys.id = 1。到目前为止一切顺利。现在来说说问题。当我将这两者结合起来时,问题就出现了:

UPDATE companys 
SET companys.signature = '$SIGNATURE'
WHERE companys.id = ( SELECT companys.id
FROM companys
JOIN users
ON users.company = companys.id
WHERE users.id = '$LOGGED_IN_USER')

数据库永远不会更新。就像内部选择由于某种原因突然不起作用一样。

最佳答案

使用更新查询时,您应该会收到错误:您无法在 FROM 子句中指定要更新的目标表“companys”

一种解决方案是强制 MySQL 创建一个可用作源的临时结果集:

UPDATE companys 
SET companys.signature = '$SIGNATURE'
WHERE companys.id = (
SELECT id FROM (
SELECT companys.id
FROM companys
JOIN users
ON users.company = companys.id
WHERE users.id = '$LOGGED_IN_USER'
) src
);

查看此SQL fiddle一个工作示例。

关于MySQL 子查询将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31908688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com