SQL代码:
select DeviceUID, LogType
from `DeviceUsage_Table`
where DeviceUID in (select DeviceUID, Max(LogTime)
from `DeviceUsage_Table`
group by DeviceUID);
错误:
操作数应包含1列
我该如何解决?
我想将第一个选择结果用作新条件。
select DeviceUID, Max(LogTime)
from `DeviceUsage_Table`
group by DeviceUID
此代码我可以获取每个DeviceUID
及其最后LogTime
。
我使用查询结果选择最后LogTime
时的DeviceUID的LogType,所以我的方法如上所述。
答案 0 :(得分:2)
您的子查询:
"SELECT DeviceUID, Max(LogTime) FROM `DeviceUsage_Table` group by DeviceUID"
当前返回两列,即DeviceUID和Max(Logtime)。这不会与DeviceUID in
一起使用,因为in
需要一个列表。手写列表:("A", "B", "C")
或只返回一列的查询。
你回复Max(LogTime)的原因是什么?然后我可以帮助更多。
答案 1 :(得分:0)
错误消息是显式的,这是因为根据SQL的规则,为了使用“in”关键字,以下SELECT必须只返回1列。所以你可能想做类似的事情:DeviceUID in(SELECT DeviceUID FROM ...
答案 2 :(得分:0)
您正在子查询中选择两列。由于您要与一列进行比较,因此您应该只有一个。请尝试以下查询
select DeviceUID, LogType from `DeviceUsage_Table`
where DeviceUID in
(SELECT DeviceUID FROM `DeviceUsage_Table` group by DeviceUID);
答案 3 :(得分:0)
那么,
(SELECT DeviceUID, Max(LogTime) FROM `DeviceUsage_Table` group by DeviceUID)
返回两列,因此您无法在IN
子句中使用它。如何解决它取决于您对查询的要求。
select DeviceUID, LogType
from `DeviceUsage_Table`
where DeviceUID in (SELECT DeviceUID FROM `DeviceUsage_Table` group by DeviceUID);
会有效,但没有意义,因为它与
相同select DeviceUID, LogType
from `DeviceUsage_Table`
where DeviceUID