子查询执行多行,我的查询不同

时间:2016-01-19 15:35:16

标签: php mysql sql

SELECT enquiry.*,
      (SELECT comm
       from comments
       where enquiry.id = comments.enquiryId
       order by time DESC
      ) as comm
FROM enquiry
where id='110' AND cmpId='3'

当我想通过删除限制来执行多行时,它说"子查询执行多行" 请帮忙

3 个答案:

答案 0 :(得分:2)

您的子查询称为标量子查询,这意味着它必须有一列,最多一行。一种简单的方法是使用JOIN

将结果放在多行中
SELECT e.*, c.comments
FROM enquiry e JOIN
     comments c
     ON e.id = c.enquiryId
where e.id = 110 AND e.cmpId = 3;

答案 1 :(得分:0)

或者您可以将子查询放在from子句中(如下所示),这与连接条件类似。

SELECT enquiry.*, comm.comm
FROM enquiry,
      (SELECT comm
       from comments
       where enquiry.id = comments.enquiryId
       order by time DESC
      ) as comm
where id='110' AND cmpId='3'

答案 2 :(得分:0)

作为询问与...之间的关系评论是1到多(如图所示) 您需要添加GROUP_CONCAT()函数以对所有注释进行分组,如下所示:

SELECT enquiry.*,
      (SELECT GROUP_CONCAT(comm)
       from comments
       where enquiry.id = comments.enquiryId
       order by time DESC
      ) as comm
FROM enquiry
where id='110' AND cmpId='3'