gpt4 book ai didi

mysql - Where 子句中的未知字段

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

我收到一个包含两列永久表的数据库 Quota_ourQuota_theirs 对于我拥有的每一行 如果一列不为空,另一列为空,我需要要使用的一列,所以我尝试更新其中一个列,一旦记录被交换,我将删除另一个表。 问题是我不是很喜欢 MySql 但我需要这个数据库用于我尝试嵌套选择的副项目因为你无法设置更新从同一个表中的选择中获取值所以我尝试了这个:

UPDATE permanent
SET Quota_our = (
SELECT q
FROM (
SELECT Quota_theirs AS q, CT_NUM AS code_x
FROM permanent
WHERE Quota_our = 0 OR Quota_our IS NULL
)
) AS A
WHERE
A.code_x = permanent.CT_NUM AND
permanent.CT_NUM IS NOT NULL

但是我得到这个错误:

Unknown field 'A.code_x' in where clause I have searched quite well for any related questions , all of whom couldn't get me in the right direction.

最佳答案

我同意,这里的错误信息有点误导。实际上,它应该说 unknown table A 并且根本原因会更清楚。

问题是 code_x 字段是在派生表 A 中定义的,该派生表是在为 Quota_our 字段赋值时创建的。但是,为了在 where 子句中引用一个字段(好吧,表),该表必须列在 update statementtable_reference 部分中。 :

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

您可以通过使用多表 update 语句避免对子查询的需要来解决此问题:

UPDATE permanent as p1 
INNER JOIN permanent as p2 on p2.CT_NUM = p1.CT_NUM
SET p1.`Quota_our` = p2.`Quota_theirs`
WHERE p1.CT_NUM IS NOT NULL AND (p2.Quota_our= 0 OR p2.`Quota_our` IS NULL)

关于mysql - Where 子句中的未知字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45754461/

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