我有两个表... EVENT(主键是EID)(包含所有常规事件数据)和SINGLE_EVENT(主键是SEID)(包含有关与特定事件ID相关的每个事件的信息,即事件的日期和时间)个别活动,场地位置等

总而言之,我想找到对于每个整体事件(EID)最快发生的“单个事件”-这应该为SINGLE_EVENTS表中的每个唯一EID返回一个事件
然后,我想将整个EVENT信息绑定到返回的结果。

问题是,使用下面的当前MySQL语句,我需要为嵌套查询选择*以具有处理查询所需的所有信息,但是我也不想选择所有这些信息,因为我只需要SEID从查询结果(而不是整个表)

这是我的查询(显然在没有注释的情况下执行):

<!-- non working outer query...
SELECT SINGLE_EVENT.SEID, EVENT.* FROM EVENT
INNER JOIN SINGLE_EVENT ON SINGLE_EVENT.EID=EVENT.EID
WHERE SINGLE_EVENT.SEID IN (
-->
<!-- working sub query...
select * from SINGLE_EVENT t
inner join (select eid, min(date) as MinDate from SINGLE_EVENT
            group by eid) tm
on t.eid=tm.eid and t.date=tm.MinDate and t.date>=sysdate()
-->
)


我是SQL新手,不知道如何最好地从表中查找此信息。我觉得我的工作非常接近,但是由于子查询的多列返回值,我不断收到消息“操作数应包含1列”。

任何帮助表示赞赏。

最佳答案

您可以简单地首先使用您的聚集,然后使用您的真实表:

select e.*, se.*
from event e
join
(
  select eid, min(date) as date
  from single_event
  where date >= sysdate()
  group by eid
) first_events on first_events.eid = e.eid
join single_event se on se.eid = first_events.eid and se.date = first_events.date;

关于mysql - 比较多行嵌套SQL语句返回的数据的1行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33638822/

10-10 23:39