【发布时间】:2015-03-31 06:09:23
【问题描述】:
看起来很简单;但我无法正常工作。
select ISIN, QuoteTimestamp
from QuoteData
where (ISIN, QuoteTimestamp) IN
(select ISIN, MAX(QuoteTimestamp) QuoteTimestamp
from QuoteData
group by ISIN)
这个查询给了我一个语法错误。如果我将其修改为仅使用一列(删除 MAX(QuoteTimewstamp)),它会起作用。
根据文档,这似乎是正确的。
为子查询别名添加“AS”没有区别。
这是来自 SQLite Manager 的完整错误消息。
SQLiteManager: Likely SQL syntax error: select ISIN, QuoteTimestamp
from QuoteData
where (ISIN, QuoteTimestamp) IN
(select ISIN, MAX(QuoteTimestamp) AS QuoteTimestamp
from QuoteData
group by ISIN)
[ near ",": syntax error ]
Exception Name: NS_ERROR_FAILURE
Exception Message: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [mozIStorageConnection.createStatement]
这似乎可行,但对我来说,这似乎违反直觉。它从带有 MAX(QuoteTimestamp) 的行返回“Symbol”、“Bid”和“Ask”。
select ISIN, Symbol, Bid, Ask, MAX(QuoteTimestamp)
from QuoteData
group by ISIN
我确信 Oracle 和他们的同类会告诉我 Symbol、Bid 和 Ask 不是分组表达式。
感谢大家的帮助。
谢谢, 阿尔。
【问题讨论】:
-
嗨,我在使用“AS”时得到了相同的结果。这是完整的错误。 SQLiteManager:可能的 SQL 语法错误:选择 ISIN,QuoteTimestamp from QuoteData where (ISIN, QuoteTimestamp) IN (select ISIN, MAX(QuoteTimestamp) AS QuoteTimestamp from QuoteData group by ISIN) [ near ",": syntax error ] 异常名称:NS_ERROR_FAILURE 异常消息:组件返回失败代码:0x80004005 (NS_ERROR_FAILURE) [mozIStorageConnection.createStatement]
-
请使用编辑功能将消息添加到您的问题中。
-
请显示文档中允许多值表达式的部分。
-
好的。我必须假设您可以像使用其他数据库一样指定多个列。感谢 cmets。
标签: sqlite group-by subquery syntax-error multiple-columns