繁体   English   中英

将多个表中的多个插入和选择语句合并到一个查询中?

[英]Multiple Insert and Select Statements From Multiple Tables into one Query?

我将这些都作为 Cron 作业 PHP 运行并且它正在运行,但似乎运行缓慢,而且我认为它的效率不高。 有 5 个查询,其背后的基本思想是在表中查找新的 SKU 并将它们插入到 MasterSKU 表中。

INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM   AmazonListings
WHERE  NOT EXISTS (SELECT SKU
                   FROM   MasterSKU
                   WHERE  AmazonListings.SKU = MasterSKU.SKU);

INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM   ShopifyListings
WHERE  NOT EXISTS (SELECT SKU
                   FROM   MasterSKU
                   WHERE  ShopifyListings.SKU = MasterSKU.SKU);

INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM   eBayListings_1
WHERE  NOT EXISTS (SELECT SKU
                   FROM   MasterSKU
                   WHERE  eBayListings_1.SKU = MasterSKU.SKU);

INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM   eBayListings_2
WHERE  NOT EXISTS (SELECT SKU
                   FROM   MasterSKU
                   WHERE  eBayListings_2.SKU = MasterSKU.SKU);

INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM   eBayListings_3
WHERE  NOT EXISTS (SELECT SKU
                   FROM   MasterSKU
                   WHERE  eBayListings_3.SKU = MasterSKU.SKU);

然后我将一一进入 PHP 脚本并使用mysqli_query来执行每个单独的查询。

是否有可能将所有的这些,即使他们都来FROM不同的表? 或者有没有更好、更优化的方法来做到这一点?

答案是否定的。

不是,因为如果要从多个互不相关的表中提取数据,则需要使用单独的查询。

是的,因为在 sql 中,您可以使用union将多个查询的结果附加在一起 ​​- 前提是它们具有相同数量的字段。

INSERT INTO MasterSKU (SKU)
    (SELECT DISTINCT SKU
     FROM   AmazonListings
     WHERE  NOT EXISTS (SELECT SKU
                   FROM   MasterSKU
                   WHERE  AmazonListings.SKU = MasterSKU.SKU))
     union
     (SELECT DISTINCT SKU
     FROM   ShopifyListings
     WHERE  NOT EXISTS (SELECT SKU
                   FROM   MasterSKU
                   WHERE  ShopifyListings.SKU = MasterSKU.SKU)
     union ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM