mySQL命令在使用'GROUP BY'和'WHERE ... IN'时出错

时间:2015-05-23 05:01:06

标签: mysql sql

我有一个包含以下列的表格:DATE, TICKER, and ID. 基本上,我试图用下面的代码做的是选择所有的股票代码及其相应的ID(它可以有多个ID)。但是,在表中,有多个条目,其中代码可以具有相同的ID,但属于不同的日期,因此在这种情况下,我选择具有最小日期的ID。

SELECT 
       MIN(DATE), 
       TICKER, 
       ID 
FROM Names 
GROUP BY 
        TICKER, 
        ID 
WHERE TICKER IN ('A', 'B')

现在,当我独立尝试命令时,它可以工作,但是当我将GROUP BYWHERE IN命令组合在一起时,我认为出现了问题,因为我收到语法错误。

如果有什么不清楚,请告诉我,我会尽力澄清。

4 个答案:

答案 0 :(得分:5)

WHERE子句在GROUP BY子句

之前出现
SELECT MIN(DATE), TICKER, ID 
FROM Names 
WHERE TICKER IN ('A', 'B')
GROUP BY TICKER, ID 

答案 1 :(得分:1)

您在GROUP BY子句之前使用WHERE子句,维护子句序列。

SELECT MIN(DATE), TICKER, ID 
FROM Names 
WHERE TICKER IN ('A', 'B')
GROUP BY TICKER, ID 

答案 2 :(得分:1)

如果没有GROUP BY,WHERE IN将在最后,但如果GROUP BY存在则应该在最后。像这样使用

SELECT MIN(DATE),
TICKER, ID 
FROM Names 
WHERE TICKER IN ('A', 'B')
GROUP BY TICKER, ID 

答案 3 :(得分:1)

执行顺序

执行SQL查询时,将按以下顺序执行。

FROM

ON

JOIN

WHERE

GROUP BY

HAVING

SELECT

DISTINCT

ORDER BY

TOP

这是执行顺序

SELECT MIN(DATE),TICKER, ID 
FROM Names 
WHERE TICKER IN ('A', 'B')
GROUP BY TICKER, ID 

有关更多信息,请使用Link