[英]MYSQL UNION and ORDER BY not working
I have a mysql query which is as follows 我有一个mysql查询,如下所示
(SELECT order_product.op_id,
order_product.ocat_id,
order_product.op_partnunber,
order_product.op_name,
order_product.op_upc,
order_product.op_desc,
order_stockavailable.osa_id,
order_stockavailable.of_id,
order_stockavailable.osa_stocka,
order_category.ocat_name
FROM
order_product
LEFT JOIN order_category
ON order_product.ocat_id = order_category.ocat_id
LEFT JOIN order_stockavailable
ON order_product.op_id = order_stockavailable.op_id)
UNION
(SELECT order_product.op_id,
order_product.ocat_id,
order_product.op_partnunber,
order_product.op_name,
order_product.op_upc,
order_product.op_desc,
order_stockavailable_attributes.id,
order_stockavailable_attributes.of_id,
order_stockavailable_attributes.opap_stock,
order_category.ocat_name
FROM order_product
LEFT JOIN order_category
ON order_product.ocat_id = order_category.ocat_id
LEFT JOIN order_stockavailable
ON order_product.op_id = order_stockavailable.op_id
LEFT JOIN order_stockavailable_attributes
ON order_product.op_id = order_stockavailable_attributes.op_id)
ORDER BY order_product.op_name
The query is givng error, T 查询是givng错误,T
Table 'order_product' from one of the SELECTs cannot be used in global ORDER clause
I checked the MYSQL manual, but am not getting any clue, any help would be really great. 我检查了MYSQL手册,但没有得到任何线索,任何帮助都会非常棒。
SELECT * FROM ( SELECT order_product.op_id, order_product.ocat_id, order_product.op_partnunber, order_product.op_name, order_product.op_upc, order_product.op_desc, order_stockavailable.osa_id, order_stockavailable.of_id, order_stockavailable.osa_stocka, order_category.ocat_name FROM order_product LEFT JOIN order_category ON order_product.ocat_id = order_category.ocat_id LEFT JOIN order_stockavailable ON order_product.op_id = order_stockavailable.op_id UNION SELECT order_product.op_id, order_product.ocat_id, order_product.op_partnunber, order_product.op_name, order_product.op_upc, order_product.op_desc, order_stockavailable_attributes.id, order_stockavailable_attributes.of_id, order_stockavailable_attributes.opap_stock, order_category.ocat_name FROM order_product LEFT JOIN order_category ON order_product.ocat_id = order_category.ocat_id LEFT JOIN order_stockavailable ON order_product.op_id = order_stockavailable.op_id LEFT JOIN order_stockavailable_attributes ON order_product.op_id = order_stockavailable_attributes.op_id ) t ORDER BY op_name
Btw: there is no need to put the individual SELECTs of a UNION into brackets. 顺便说一句:没有必要将UNION的各个SELECT放入括号中。
Try the following syntax? 请尝试以下语法?
SELECT
x, y
FROM
(
SELECT x, y FROM z
UNION
SELECT a, b FROM c
)
ORDER BY
x, y
Try 尝试
order by op_name
instead of 代替
ORDER BY order_product.op_name
SELECT *
FROM (SELECT order_product.op_id,
...
FROM
... )
UNION
(SELECT order_product.op_id,
...
FROM order_product
... ) U
ORDER BY op_name;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.