【发布时间】:2019-09-04 18:35:25
【问题描述】:
我有八个表格,其中包含有关对整个公司的应用程序进行更改的信息。我只想查询和组合 200 多个应用程序子集的行。为此,我通过应用程序代码(AAA、BBB 等)查询每个表,并希望合并结果。当我使用超过 5 个应用程序代码时,我收到错误“查询复杂”。
我知道有一种更有效的方法可以做到这一点,但以下是我在有限的知识范围内所能做到的最好的方法。
SELECT * FROM [2019-07-A July 5 to 7] WHERE [Application code] LIKE 'AAA' UNION ALL
SELECT * FROM [2019-07-B July 12 to 14] WHERE [Application code] LIKE 'AAA' UNION ALL
SELECT * FROM [2019-07-C July 19 to 21] WHERE [Application code] LIKE 'AAA' UNION ALL
SELECT * FROM [2019-07-D July 26 to 28] WHERE [Application code] LIKE 'AAA' UNION ALL
SELECT * FROM [2019-08-A Aug 2 to 4] WHERE [Application code] LIKE 'AAA' UNION ALL
SELECT * FROM [2019-08-B Aug 9 to 11] WHERE [Application code] LIKE 'AAA' UNION ALL
SELECT * FROM [2019-08-C Aug 16 to 18] WHERE [Application code] LIKE 'AAA' UNION ALL
SELECT * FROM [2019-08-D Aug 23 to 25 Proposed] WHERE [Application code] LIKE 'AAA' UNION ALL
SELECT * FROM [2019-07-A July 5 to 7] WHERE [Application code] LIKE 'BBB' UNION ALL
SELECT * FROM [2019-07-B July 12 to 14] WHERE [Application code] LIKE 'BBB' UNION ALL
SELECT * FROM [2019-07-C July 19 to 21] WHERE [Application code] LIKE 'BBB' UNION ALL
SELECT * FROM [2019-07-D July 26 to 28] WHERE [Application code] LIKE 'BBB' UNION ALL
SELECT * FROM [2019-08-A Aug 2 to 4] WHERE [Application code] LIKE 'BBB' UNION ALL
SELECT * FROM [2019-08-B Aug 9 to 11] WHERE [Application code] LIKE 'BBB' UNION ALL
SELECT * FROM [2019-08-C Aug 16 to 18] WHERE [Application code] LIKE 'BBB' UNION ALL
SELECT * FROM [2019-08-D Aug 23 to 25 Proposed] WHERE [Application code] LIKE 'BBB';
我希望能够一次查询所有 200 多个应用程序代码,并且比每个代码输入相同的字符串 8 次更有效。
【问题讨论】:
-
您是否在
like语句的条件内使用通配符运算符? -
除了合并表之外的所有其他操作都会创建非规范化数据,这会导致问题,例如
Query to complex或执行缓慢。如果您需要单独的表,您可以通过创建包含该数据的查询来模拟它们(根据前表名过滤组合表)。 -
通常,应用程序的更改由 a
Version control systems (VCS)跟踪。你有什么理由不这样做?