【问题标题】:error subquery return more than 1 when doing multiple select进行多选时,错误子查询返回超过 1
【发布时间】:2017-01-12 07:52:33
【问题描述】:

我想在一个查询中使用不同的条件进行多项选择。但不知何故,我陷入了这个问题。有什么想法吗?

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 行

【问题讨论】:

  • 错误信息说明了一切。问题是:你想做什么?
  • 这很奇怪。您显示的查询看起来不错,不应引发错误Subquery returns more than 1 row。这实际上是您正在运行的查询吗?
  • 我正在尝试在 1 个查询中选择多个不同的 WHERE 条件。谷歌搜索后我得到了那些答案但错误
  • @lalalala different conditions是什么意思
  • 像这样的例子 select (select name from door where name="door1") as door1, (select name from door where name="door2") as door2

标签: mysql sql subquery


【解决方案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

【讨论】:

    【解决方案2】:

    如果表门中的行数超过 1 行,则会出现此错误。如果您也想查看与第一次查询中选择的事件相关的门名称,请使用

    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"
    

    【讨论】:

    • 我已经试过了。但我想要不同的 where 条件并在每个选择中给出别名
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多