要对UNION 中的单个选择查询使用限制,请将它们括在括号中。来自Union 文档:
要将 ORDER BY 或 LIMIT 应用于单个 SELECT,请放置子句
在括住 SELECT 的括号内
还有一个有趣的点:
但是,对单个 SELECT 语句使用 ORDER BY 意味着
与行在最终结果中出现的顺序无关
因为默认情况下 UNION 会产生一组无序的行。所以,
在这种情况下使用 ORDER BY 通常与
LIMIT,以便用于确定所选行的子集
检索 SELECT,即使它不一定会影响
这些行在最终 UNION 结果中的顺序。 如果出现 ORDER BY
在 SELECT 中没有 LIMIT,它会被优化掉,因为它会有
反正没有效果。
Updated SQL Fiddle
(
SELECT
openservicecalls.serial,
openservicecalls.company,
product1_errors.serial,
product1_errors.error,
description.error,
description.description,
masterlist.serial,
masterlist.phonenumber
FROM product1_errors
LEFT JOIN description
ON product1_errors.error = description.error
LEFT JOIN openservicecalls
ON product1_errors.serial = openservicecalls.serial
LEFT JOIN masterlist
ON product1_errors.serial = masterlist.serial LIMIT 5
)
UNION ALL
(
SELECT
openservicecalls.serial,
openservicecalls.company,
product2_errors.serial,
product2_errors.error,
description.error,
description.description,
masterlist.serial,
masterlist.phonenumber
FROM product2_errors
LEFT JOIN description
ON product2_errors.error = description.error
LEFT JOIN openservicecalls
ON product2_errors.serial = openservicecalls.serial
LEFT JOIN masterlist
ON product2_errors.serial = masterlist.serial LIMIT 5
)
UNION ALL
(
SELECT
openservicecalls.serial,
openservicecalls.company,
product3_errors.serial,
product3_errors.error,
description.error,
description.description,
masterlist.serial,
masterlist.phonenumber
FROM product3_errors
LEFT JOIN description
ON product3_errors.error = description.error
LEFT JOIN openservicecalls
ON product3_errors.serial = openservicecalls.serial
LEFT JOIN masterlist
ON product3_errors.serial = masterlist.serial LIMIT 5
)