执行多次select时,错误子查询返回多于1

时间:2017-01-12 07:52:34

标签: mysql sql subquery

我想在一个具有不同条件的查询中进行多项选择。但不知怎的,我陷入了这个问题。任何想法?

SELECT
    (select io_link_event_names.name from doors left join controller_devices on doors.iid = controller_devices.iid left join events on controller_devices.mac = events.mac left join io_link_event_names on events.iolinkerid = io_link_event_names.extra where events.iolinkerid = "9000;1") AS forced,
    (select doors.name FROM doors) AS doorname

错误#1242 - 子查询返回超过1行

2 个答案:

答案 0 :(得分:1)

考虑这个

SELECT d.[forced], doors.name as doorname
from doors
left join (
select  controller_devices.iid, io_link_event_names.name as [forced]
from events
inner join controller_devices on controller_devices.mac = events.mac 
inner join io_link_event_names on events.iolinkerid = io_link_event_names.extra 
where events.iolinkerid = "9000;1"
) as d on d.iid = doors.iid

答案 1 :(得分:0)

如果桌门中有多于一行,则会出现此错误。如果您也想看到与首次查询中选择的事件相关的门名,请使用

select io_link_event_names.name,
       doors.name doorname
  from doors
  left join controller_devices
    on doors.iid = controller_devices.iid
  left join events
    on controller_devices.mac = events.mac
  left join io_link_event_names
    on events.iolinkerid = io_link_event_names.extra
where events.iolinkerid = "9000;1"