mysql - 比较多行嵌套SQL语句返回的1行数据

标签 mysql sql subquery inner-join

我有两个表... EVENT(主键是 EID)(包含所有常规事件数据)和 SINGLE_EVENT(主键是 SEID)(包含与特定事件 ID 相关的每个单独事件的信息,即日期和单项事件时间、地点等

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

问题是,对于下面的当前 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/

相关文章:

mysql 连接、分组数据和比较?

mysql子查询像支票号码一样求和

php - Laravel 计算最重复的项目

MySQL INSERT 具有多个 SELECTS,返回列数不同

sql - 3 个表连接一个表的一个字段和另一个表的一个字段

mysql - 返回不同列中具有特定值的所有行

c# - 如何使用表达式树编写此嵌套查询?

mysql - 如何在 MySQL 中将 varchar 日期转换为日期时间

需要 MySql 查询帮助

mysql - 在一个数据库上查询速度慢,但在他的副本上查询速度快