Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用select query with union更新MySQL表时,每个派生表都必须有自己的别名错误_Mysql_Sql - Fatal编程技术网

使用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
已启用查询以无错误运行

希望这能帮助其他遇到这个问题的人