Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在同一个表上的两个查询是否显示具有不同值的同一行?_Mysql - Fatal编程技术网

Mysql 在同一个表上的两个查询是否显示具有不同值的同一行?

Mysql 在同一个表上的两个查询是否显示具有不同值的同一行?,mysql,Mysql,我是SQL新手,但我很确定这里发生了一些奇怪的事情。我有一个MySQL数据库,其中有一个表eventtable,它有4列RoomNum、EventName、EventStatus和EventDateTime 某些事件名称会在不同的时间重复,同时EventStatus会在不同的时间打开和关闭。我正在尝试获取最新条目,以便获得当前状态,因此我使用: select RoomNum, EventName, EventStatus, max(EventDateTime) as MaxDate fr

我是SQL新手,但我很确定这里发生了一些奇怪的事情。我有一个MySQL数据库,其中有一个表eventtable,它有4列RoomNum、EventName、EventStatus和EventDateTime

某些事件名称会在不同的时间重复,同时EventStatus会在不同的时间打开和关闭。我正在尝试获取最新条目,以便获得当前状态,因此我使用:

select RoomNum, EventName, EventStatus, max(EventDateTime) as MaxDate
    from eventtable where eventName = "DND"
    group by RoomNum
导致:

为了确保一切正常,我检查了每个房间,确保每个房间都有最新的房间,包括:

SELECT * FROM `eventtable`
where RoomNum = "070#" and eventname = "DND" /*where "#" is a specific digit*/
order by eventdatetime asc
第一个看起来不错:

但是其他人却没有!即使时间正确,EventStatus也错误:

我没有得到的是EventDateTime匹配,它告诉我我正在查看同一行数据,但是内部值EventStatus怎么可能不同呢


请帮忙。谢谢。

这就是firebird不允许这样做的原因。只有这是有效的

select RoomNum, max(EventDateTime) as MaxDate
from eventtable where eventName = "DND"
group by RoomNum
EventName和EventStatus值是任意的。你还没有告诉它你想要什么。我认为你做不到。RoomNumn是隐式的,因为group by


要获取所需的数据,一种方法是使用maxEventDateTime返回引用的子选择。

通过使用下面的查询,您可以根据需要获得结果。请试一试


选择*从eventtable中选择RoomNum、EventName、EventStatus、EventDateTime,其中EventName=DND order by EventDateTime desctab group by RoomNum

谢谢你的及时回复。我不完全理解为什么EventName和EventStatus会是任意的,但我对这个问题非常陌生,因为它也显示了正确的内容,这让它非常混乱。我想我必须做的,我想我看到其他人做的,是与我的表进行连接,该表具有EventName和EventStatus,其中a.RoomNum=b.RoomNum和a.EventDateTime=b.EventDateTime。希望类似的方法能奏效。在GROUPBY中,它只查看GROUPBY子句中的值和聚合值。它对行不起作用。因此,它不能从最大日期值所在的特定行返回值。确实如此!我已经手动检查了条目,不仅查询有效,而且比我的加入筛选尝试更快。现在我只需要剖析你的代码,试着理解你是如何做的。仅供参考-使用内部联接以便我的第一个表可以包含所有列并具有正确的数据在我的计算机上需要40秒。这个搜索需要1.4秒!谢谢