【发布时间】:2021-02-11 06:01:00
【问题描述】:
我是 sql 的初学者。任何人都请告诉我我的自定义查询的问题。
select *
from Follow_My_Doct.tbl_hospital_registration h
INNER JOIN Follow_My_Doct.tbl_subscribed_packages s
ON s.hospitalId = h.id
AND s.active = 1
AND ( select max(sp.expireDate), sp.hospitalId
from Follow_My_Doct.tbl_subscribed_packages sp
where sp.active = 1
group by sp.hospitalId )
where h.hospital_active = 1
错误代码:1241。操作数应包含 1 列
订阅表
hospital Id expireDate
145 2021-07-10
146 2021-06-10
147 2021-09-10
146 2021-10-10
【问题讨论】:
-
ON 子句中的子查询必须做什么?它给出了一个 2 列的行集 - 很多行,每列 2 列,而在 ON 中必须使用单个标量值(可能被视为一些布尔值)。
-
为什么在 ON 子句中需要子查询?
-
@FabioMendesSoares 为该医院选择 max(exp.date)(即存在一对多关系)
-
然后,我会在新的 INNER JOIN 子句中添加这个子查询,就像刚刚发布的答案一样
-
@FabioMendesSoares 我添加了,但 146 号医院返回 2 次。即,它不占用 max(exp.date)
标签: mysql sql group-by inner-join mysql-workbench