簡體   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