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

Php 子查询执行多行,而我的查询不同,php,mysql,sql,Php,Mysql,Sql,当我想通过删除限制来执行多行时,它会说“子查询执行多行” 请帮助您的子查询称为标量子查询,这意味着它必须有一列,最多一行。一种简单的方法是使用JOIN将结果放在多行中: SELECT enquiry.*, (SELECT comm from comments where enquiry.id = comments.enquiryId order by time DESC ) as comm FROM enquiry where i

当我想通过删除限制来执行多行时,它会说“子查询执行多行”
请帮助

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

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'

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

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'

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

SELECT e.*, c.comments
FROM enquiry e JOIN
     comments c
     ON e.id = c.enquiryId
where e.id = 110 AND e.cmpId = 3;

或者您可以将子查询放在from子句中(如下所示),这类似于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对多(如图所示) 您需要添加GROUP_CONCAT()函数以将所有注释分组,如下所示:

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'

因为查询和评论之间的关系是1对多(如图所示) 您需要添加GROUP_CONCAT()函数以将所有注释分组,如下所示:

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'

请提供样本数据和预期结果。错误信息非常清楚。是否抱怨子查询返回了多行?请提供示例数据和所需结果。错误信息非常清楚。是否有人抱怨子查询返回了多行?现在我想在选择选项标记中显示多行如果此答案已解决了您所写的问题,请将此标记为最佳答案,以便用户可以获得它的声誉现在我想在选择选项中显示多行tag如果此答案解决了您所写的问题,请将此标记为最佳答案,以便用户可以因此获得声誉