我遇到了subquerys的问题。 在我输入的时候在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')
数据库永远不会更新。这就像内部选择因某种原因突然不起作用。
答案 0 :(得分:0)
使用更新查询,您应该收到错误:您无法在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。