我有这张桌子。
id | promoid | fecha | Tarifa
--------------------------------------
1 | 1 | 2016-10-01 | 74.38
2 | 1 | 2016-10-02 | 74.38
3 | 2 | 2016-10-01 | 111.57
4 | 2 | 2016-10-02 | 111.57
我想分组并显示日期之间的所有记录。我曾尝试过group by但我只获得了一条记录(第一条记录)。
这是我的SQL
SELECT *
FROM promociones
WHERE fecha >= '2016-10-01'
AND fecha < '2016-10-03'
GROUP
BY promoid
当sql运行时,它只显示按promoid分组的第一行。像这样的东西。
id | promoid | fecha | Tarifa
--------------------------------------
1 | 1 | 2016-10-01 | 74.38
3 | 2 | 2016-10-01 | 111.57
表格太长了,但我想获得promoid所有的行。这样的事情。
id | promoid | fecha | Tarifa
--------------------------------------
1 | 1 | 2016-10-01 | 74.38
2 | 1 | 2016-10-02 | 74.38
3 | 2 | 2016-10-01 | 111.57
4 | 2 | 2016-10-02 | 111.57
答案 0 :(得分:1)
按查询分组“allways”意味着两件事:
group by
sum()
生成的每个组相关且有意义的任何分组函数(count()
,max()
,group by
) 特别针对您的问题:您,期望“所有”记录(相同金额),并且您没有或期望或建议任何相关的分组功能。正如在评论中所说的那样,它似乎可以解决为select * from ...
,或者你需要解释或更好地思考你想要的东西。
所以给出:
select expr1, expr2, expr3, expr4 group by expr1, expr2
请将group by
视为收到某些输入数据的优点,并根据此规则提供一些输出数据:
whatever()
作为分组函数,这样:whatever(expr3), whatever(expr4)
并输出任何值从“那个组”内部(这就是为什么你可以在你的例子中使用*并且你有显示的输出)答案 1 :(得分:0)
SELECT *
FROM tabletwo
WHERE fecha >= '2016-10-01'
AND fecha < '2016-10-03'
ORDER BY promoid