多个UNION查询不起作用 [英] Multiple UNION query doesn't work
问题描述
多个UNION查询:
SELECT [Ordine numero] AS ordine, [data ordine] AS data, comm AS commessa
FROM [archivio globale]
WHERE [ordine numero] IS NOT NULL
UNION
SELECT [numero ordine cliente] AS ordine, [data ordine cliente] AS data, numero AS commessa
FROM [ricambi]
WHERE [numero ordine cliente] IS NOT NULL
UNION
SELECT [numero ordine cliente] AS ordine, [data ordine cliente] AS data, numero AS commessa
FROM [trasferte]
WHERE [numero ordine cliente] IS NOT NULL
ORDER BY [ordine];
它不起作用:我收到错误消息:
It doesn't work: I get the error message:
[mysql][odbc 5.1 Driver][mysqld-5.5.14]You have an error in your SQL syntax ...
单个UNION查询正常工作(没有第二个UNION语句)?该怎么办?
While the single UNION query works properly (without the second UNION statement)? What to do?
推荐答案
这是一个MyODBC错误,请参见在此处正式输入.截止到今天,它仍然开放...
It's a MyODBC bug see offical entry here. As of today, it's still open...
我找到了一个简单的解决方案:myODBC将仅理解使用一个UNION
(或UNION ALL
)的查询.因此,您必须用()
包装UNION
的右侧部分.另外,您需要以;
结尾每个查询,如下所示:
I found a simple solution: myODBC will only understand queries with ONE UNION
(or UNION ALL
). So you have to wrap the right part of the UNION
with ()
. Plus, you'll need to end each query with ;
, like this:
SELECT [Ordine numero] AS ordine, [data ordine] AS data, comm AS commessa
FROM [archivio globale]
WHERE [ordine numero] IS NOT NULL;
UNION ALL (
SELECT [numero ordine cliente] AS ordine, [data ordine cliente] AS data, numero AS commessa
FROM [ricambi]
WHERE [numero ordine cliente] IS NOT NULL;
UNION ALL
SELECT [numero ordine cliente] AS ordine, [data ordine cliente] AS data, numero AS commessa
FROM [trasferte]
WHERE [numero ordine cliente] IS NOT NULL
);
当然,您也必须对此部分应用相同的方法.例如,如果您在查询中又需要一个UNION ALL
:
And of course, you must apply the same method to this part, too. For instance, if you needed one more UNION ALL
in you query:
SELECT [Ordine numero] AS ordine, [data ordine] AS data, comm AS commessa
FROM [archivio globale]
WHERE [ordine numero] IS NOT NULL;
UNION ALL (
SELECT [numero ordine cliente] AS ordine, [data ordine cliente] AS data, numero AS commessa
FROM [ricambi]
WHERE [numero ordine cliente] IS NOT NULL;
UNION ALL (
SELECT [numero ordine cliente] AS ordine, [data ordine cliente] AS data, numero AS commessa
FROM [trasferte]
WHERE [numero ordine cliente] IS NOT NULL;
UNION ALL
SELECT [numero ordine cliente] AS ordine, [data ordine cliente] AS data, numero AS commessa
FROM [xxx]
WHERE [numero ordine cliente] IS NOT NULL
));
这篇关于多个UNION查询不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!