使用select query with union更新MySQL表时,每个派生表都必须有自己的别名错误
我有一个查询问题,该查询使我能够将产品详细信息从多个表移动到单个表中。这是我的开始查询使用select query with union更新MySQL表时,每个派生表都必须有自己的别名错误,mysql,sql,Mysql,Sql,我有一个查询问题,该查询使我能够将产品详细信息从多个表移动到单个表中。这是我的开始查询 UPDATE tbl_temp_color_pricing cp , (SELECT SKU , pkID , pkSKU , pkBrand , pkCategory , pkClass , pkSuperCategory FROM ( ( SELECT sb.SKU , pb.pkID , sb.pkID AS pkSKU , pb.pkBrand ,
UPDATE tbl_temp_color_pricing cp ,
(SELECT
SKU ,
pkID ,
pkSKU ,
pkBrand ,
pkCategory ,
pkClass ,
pkSuperCategory
FROM
(
(
SELECT
sb.SKU ,
pb.pkID ,
sb.pkID AS pkSKU ,
pb.pkBrand ,
pb.pkCategory ,
cat.pkClass ,
cat.pkSuperCategory
FROM SKU_Basic AS sb
JOIN ProductBase AS pb ON(sb.pkProduct = pb.pkID)
JOIN Categories AS cat ON(pb.pkCategory = cat.pkID)
)
UNION ALL
(SELECT
p.SKU ,
p.pkID ,
p.pkSKU ,
p.p.pkBrand ,
p.pkCategory ,
p.pkClass ,
p.pkSuperCategory
FROM
tbl_products AS p
WHERE
p.storeID = 2)
)) skuMatch
SET cp.matchSKU = skuMatch.SKU ,
cp.pkID = skuMatch.pkID ,
cp.pkSKU = skuMatch.pkSKU ,
cp.pkBrand = skuMatch.pkBrand,
cp.pkCategory = skuMatch.pkCategory ,
cp.pkClass = skuMatch.pkClass ,
cp.pkSuperCat = skuMatch.pkSuperCategory
WHERE cp.storeID = 2 AND cp.adminID = 7
因此,我根据迄今为止找到的答案为查询添加别名,如下所示:
...
FROM SKU_Basic AS sb
JOIN ProductBase AS pb ON(sb.pkProduct = pb.pkID)
JOIN Categories AS cat ON(pb.pkCategory = cat.pkID)
) t1
UNION ALL
(...
FROM
tbl_products AS p
WHERE
p.storeID = 2) t2
)) skuMatch
现在我明白了
错误:您的SQL语法有错误;检查手册
对应于您的MySQL服务器版本,以便使用正确的语法
t2附近
)) skuMatch
SET cp.matchSKU = skuMatch.SKU ,
cp.pkID = skuMatch.pkID ,
' at line 37
我做错了什么?我之前在这里找到的每个答案都表明我需要在两个子查询中添加别名,但事实并非如此。从第二个子查询中删除别名,如下所示:
UPDATE tbl_temp_color_pricing cp , (SELECT SKU, pkID, pkSKU, pkBrand, pkCategory, pkClass, pkSuperCategory FROM
(
SELECT sb.SKU, pb.pkID, sb.pkID AS pkSKU, pb.pkBrand, pb.pkCategory, cat.pkClass, cat.pkSuperCategory FROM SKU_Basic AS sb JOIN ProductBase AS pb ON(sb.pkProduct = pb.pkID) JOIN Categories AS cat ON(pb.pkCategory = cat.pkID)
) AS originalData <-- this alias is required
UNION ALL
(
SELECT p.SKU, p.pkID, p.pkSKU, p.pkBrand, p.pkCategory, p.pkClass, p.pkSuperCategory FROM tbl_products AS p WHERE p.storeID = 2
) <-- no alias required
) AS skuMatch
SET cp.matchSKU = skuMatch.SKU, cp.pkID = skuMatch.pkID, cp.pkSKU = skuMatch.pkSKU, cp.pkBrand = skuMatch.pkBrand, cp.pkCategory = skuMatch.pkCategory, cp.pkClass = skuMatch.pkClass, cp.pkSuperCat = skuMatch.pkSuperCategory
WHERE cp.storeID = 2 AND cp.adminID = 7
已启用查询以无错误运行
希望这能帮助其他遇到这个问题的人