【问题标题】:Subquery returns more than 1 row in mysql子查询在mysql中返回多于1行
【发布时间】:2011-03-22 06:52:28
【问题描述】:

我正在执行以下查询并收到错误“子查询返回超过 1 行”

我的查询是

SELECT pkTicketID,
       TicketReplyDateAdded,
       TIMESTAMPDIFF(DAY, TicketReplyDateAdded, now()) as NumberOfDays
  FROM tickets as T
    LEFT JOIN ticket_replies as TR ON T.fkTicketReplyID=TR.pkTicketReplyID
  WHERE 1 AND T.fkEmployeeID = '4'
    AND (SELECT TIMESTAMPDIFF(DAY, TicketReplyDateAdded, now()) as NumberOfDays
           FROM tickets as T
             LEFT JOIN ticket_replies as TR
               ON T.fkTicketReplyID=TR.pkTicketReplyID
        ) = 7
    AND T.TicketStatus = 'Replied'
  ORDER BY pkTicketReplyID DESC

感谢您的帮助。 奥马尔

【问题讨论】:

    标签: mysql sql mysql-error-1242


    【解决方案1】:

    您可以通过将子查询限制为仅返回一行来修复此错误,如下所示:

    SELECT pkTicketID,TicketReplyDateAdded,
           TIMESTAMPDIFF(DAY, TicketReplyDateAdded,now()) as NumberOfDays 
    FROM   tickets as T 
           LEFT JOIN ticket_replies as TR
           ON T.fkTicketReplyID=TR.pkTicketReplyID 
    WHERE  1 
    AND    T.fkEmployeeID = '4' 
    AND    (SELECT TIMESTAMPDIFF(DAY, TicketReplyDateAdded, now()) as NumberOfDays 
            FROM tickets as T LEFT JOIN ticket_replies as TR 
            ON T.fkTicketReplyID=TR.pkTicketReplyID
            LIMIT 1) = 7 
    AND     T.TicketStatus = 'Replied' 
    ORDER   BY pkTicketReplyID DESC
    

    (添加了“限制 1”)

    【讨论】:

      【解决方案2】:

      嗯,这是因为您的子查询返回不止一行

      zerkms 来救援

      ps:右侧“相关”栏中确实有很多类似的问题。

      【讨论】:

        【解决方案3】:

        一种方法是将LIMIT 1 添加到您的子查询中。另一个是确定您的子查询是否应该能够在逻辑上返回多行,如果不能,则修复它。

        【讨论】:

          猜你喜欢
          • 2018-03-08
          • 2014-02-15
          • 2012-09-17
          • 1970-01-01
          • 1970-01-01
          • 2017-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多