0

我收到一条关于“JOIN 语句有语法错误”的错误消息,但我没有在语句中使用“JOIN”。“abc.csv”和“efg.csv”都有相同的“datetime,price,change,high_low”字段。我正在使用“Microsoft.Jet.OLEDB.4.0”的VBA“ADODB.Connection”

声明如下:

SELECT
 MAX(DateValue(`datetime`)) AS `date_from`
,MIN(DateValue(`datetime`)) AS `date_to`
FROM ((
        SELECT
         `datetime`
        , `price`
        , `change`
        , `high_low`
        FROM `abc.csv`)
    UNION (
        SELECT
         `datetime`
        , `price`
        , `change`
        , `high_low`
        FROM `efg.csv`))
4

2 回答 2

1

我认为您可能需要“表”(子查询)的别名

SELECT
 MAX(DateValue(`datetime`)) AS `date_from`
,MIN(DateValue(`datetime`)) AS `date_to`
FROM ((
        SELECT
         `datetime`
        , `price`
        , `change`
        , `high_low`
        FROM `abc.csv`) A
    UNION (
        SELECT
         `datetime`
        , `price`
        , `change`
        , `high_low`
        FROM `efg.csv`) B ) C

如果不是这样,两个观察。一个是您正在使用反引号,可能是从文字编辑器中复制的。在使用单引号的地方,应该是常规的单引号字符。

第二次观察不确定您为什么在此处使用引号。字段名称看起来都有效并且不需要它们。尝试删除它们并保留字段名称。或者,如果您想要“引用”字段名称,我相信您的案例的语法将是双引号或括号。所以不是price“价格”或[价格]。如果使用单引号,则表示字符串价格。

于 2013-08-06T08:59:46.983 回答
0

你应该命名你的子查询试试下面的代码

SELECT
 MAX(DateValue(`datetime`)) AS `date_from`
,MIN(DateValue(`datetime`)) AS `date_to`
FROM (
       SELECT `datetime` , `price` , `change`, `high_low`
        FROM `abc.csv`
       UNION 
       SELECT `datetime`, `price`, `change`, `high_low`
        FROM `efg.csv`
      ) t

t在括号后添加了别名

于 2013-08-06T08:56:56.783 回答