Microsoft Query中的子查询语法差异

时间:2012-09-17 17:10:44

标签: sql excel syntax informix ms-query

上周我发布了一个关于在Microsoft Query中使用子查询的问题,虽然我在那个实例中的问题没有解决,但我发现问题比以前的情况要简单得多。

我通过ODBC在Microsoft Query(来自Excel 2010)中尝试连接到Informix数据库以执行简单查询,并且在尝试使子查询的语法正确时遇到了很多麻烦。我有一种感觉,MSQuery正在挂起与Informix / ODBC源相关的一些特性。我之所以这样想是因为如果我使用Excel电子表格作为我的数据源尝试一个非常简单的子查询,则以下语法有效:

SELECT * FROM
(
SELECT x0.field1, x0.field2
FROM `C:\USERS\NAME\DIRECTORY\Test.xlsx`.`Sheet1$` x0
)

但是,当我使用Informix数据库中的子查询尝试相同的非常简单的查询时,

SELECT * FROM
(
SELECT x0.id, x0.creation_date
FROM coastal.waybill x0
)

我收到错误"Could not add the table '(select'."我可以推测的是,MSQuery中使用的语法必须针对数据源进行定制。然而,当我抬起头来Informix's syntax for subqueries in the FROM clause时,我更加困惑,因为看起来我按照他们的语法来发球,因为他们的例子是:

SELECT LIMIT 1 * FROM 
   (SELECT c.customer_num, c.lname, c.company, 
           c.phone, u.call_dtime, u.call_descr
                 FROM customer c, cust_calls u
                 WHERE c.customer_num = u.customer_num
    ORDER BY u.call_dtime DESC);

我彻底迷失了。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您是否尝试过像这样的表别名:

SELECT a.* FROM
(
SELECT x0.id, x0.creation_date
FROM coastal.waybill x0
) a

我过去常常对MS数据库进行MS查询,而子查询不需要别名,然后我转移到需要它们的MS SQL。