mysql - SELECT * FROM mytable INNER JOIN 等好,但是 SELECT * FROM mytable WHERE... INNER JOIN 错误

标签 mysql join

我正在尝试对两个查询进行 INNER JOIN。 如果我对第一个组件有一个广泛的 SELECT 语句,它就可以正常工作。 如果我尝试向第一个组件添加 WHERE...,我会收到无信息的语法错误,而且我不知道为什么。

这是可行的,但速度很慢,因为我的表很大(约 100 万行)

SELECT a.RoomNum, a.EventName, a.EventStatus, a.EventDateTime FROM eventtable a
INNER JOIN
(
    SELECT `RoomNum`, eventname, MAX(`EventDateTime`) as MT
    FROM `eventtable`
    WHERE eventname = "DND"
    Group BY RoomNum
) b
ON a.RoomNum = b.RoomNum and a.EventDateTime = b.MT and a.eventname = b.eventname

但我真正需要的是:

SELECT a.RoomNum, a.EventName, a.EventStatus, a.EventDateTime from eventtable WHERE a.EventName = "DND" a
INNER JOIN
(
    SELECT `RoomNum`, eventname, MAX(`EventDateTime`) as MT
    FROM `eventtable`
    where eventname = "DND"
    Group by RoomNum
) b
on a.RoomNum = b.RoomNum and a.EventDateTime = b.MT and a.eventname = b.eventname

我想过将结果分配给一个表,但实际上并不希望必须生成一个表,然后将其删除,以确保下次进行查询时,不会存在任何表。

谢谢。

最佳答案

首先,JOIN 可以在两个表上。当你写的时候,你不应该对这两者添加条件。如果您愿意,请将它们添加到末尾。

将 where 子句放在最后即可运行。

关于mysql - SELECT * FROM mytable INNER JOIN 等好,但是 SELECT * FROM mytable WHERE... INNER JOIN 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30022562/

相关文章:

MYSQL查询上次列根据时间戳有不同的值

sql - BigQuery 中的线索和分析功能

mysql - 如何连接2个mysql表

mysql - 大型数据库的查询优化

php - 如何删除 SQL 结果中最旧的条目?

mySQL 具有排除优化

python pandas数据框groupby或pivot_table

c++ - 为什么在 C++ 函数 boost::algorithm::join_if 中抛出 std::bad_cast 异常?

MySQL - 连接多个映射表并计算具有不同映射条件的记录

具有多个多对多连接的 MySQL 选择导致非常慢的查询