[英]What's wrong with my SQL query ?? It won't fetch data
我基本上是想从数据库中获取包括今天在内的下三个未来事件,下面是我的查询,它说派生表必须有一个别名,我是新来的..解决方法是什么?
select * from events where event_start_date in
(select event_start_date from
(select distinct event_start_date from events
where event_start_date >= '2014-05-02' order by event_start_date)
WHERE rownum <= 3)
假设您有一个名为rownum
的列:
select * from events where event_start_date in
(select distinct event_start_date
from events
where event_start_date >= '2014-05-02' AND rownum <= 3
order by event_start_date) T
编辑:
如果您尝试使用像oracle中的rownum
方法,则可以使用LIMIT
:
select * from events where event_start_date in
(select distinct event_start_date
from events
where event_start_date >= '2014-05-02'
order by event_start_date
LIMIT 3) T
“派生表必须具有别名”
该错误意味着在FROM
子句中使用子查询时,该子查询称为派生表,并且必须为此声明一个别名。
这是应该工作的简单查询形式:
SELECT events.* FROM events
JOIN (SELECT DISTINCT event_start_date FROM events
WHERE event_start_date >= '2014-05-02'
ORDER BY event_start_date LIMIT 3) AS d USING (event_start_date)
我为派生表提供了别名,您在其中看到AS d
。 选择什么别名都没有关系,只需要一个别名即可。
“'where子句'中的未知列'rownum'”
ROWNUM
是Oracle特定的功能,它会自动为每个结果集提供一个假想的列,其整数对应于该结果集的行号。 但这不是标准的SQL,而MySQL不支持它。
因此,我删除了对隐式ROWNUM
列的引用,并将其替换为LIMIT
子句。
您可以通过JOINing来代替3个查询。 查看JOIN,以了解如何从每个表中跨入希望加入的列。
select * from events where event_start_date in
(select event_start_date from
(select distinct event_start_date,rownum from events
where event_start_date >= '2014-05-02' order by event_start_date) as t1
WHERE rownum <= 3)
这将为您提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.