多个UNION查询不起作用 [英] Multiple UNION query doesn't work

查看:78
本文介绍了多个UNION查询不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

多个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆