我将这些都作为一个 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 ...
关于php - 多个表中的多个插入和选择语句到一个查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41594264/