php - 多个表中的多个插入和选择语句到一个查询中?

标签 php mysql

我将这些都作为一个 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/

相关文章:

php - FCM 仅通过使用 PHP 的 Google 客户端 API 对 iOS 设备返回 401 未经授权的错误

mysql自动增量问题

php查询选择mysql到表网格的列

mysql - 如何根据用户配额限制 MySQL 结果

PHP imap_fetchbody 无法获取 HTML a 标签链接 url

php - 如何将文本文件中的数据导入MySQL

mysql - Delphi - 将 TStringStream 保存到 SQL

php - 关于创建 PHP-MySQL 后台任务的建议

php - Null 和 False 之间的区别

php - 如何使用 Laravel Eloquent 在两个表之间创建子查询