>  Q&A  >  본문

기본 쿼리 및 하위 쿼리 - 하위 쿼리가 원하는 결과를 반환하지 않음

<p>저희는 SQL을 사용하지 않고 있습니다.</p> <pre class="brush:php;toolbar:false;">SELECT `main`.`comment_id`, `메인`.`코멘트`, `메인`.`타임스탬프`, `main`.`replay_comment_id`, COUNT(`replay`.`comment_id`) AS 재생 FROM `posts_comments` AS `main` LEFT JOIN `posts_comments` AS `replay` ON `replay`.`replay_comment_id` = `main`.`comment_id` 어디 `main`.`post` = "107" AND (`main`.`replay_comment_id` IS NULL OR `main`.`comment_id` in ( SELECT `posts_comments`.`comment_id` 에서 `게시물_댓글` 어디 `posts_comments`.`replay_comment_id` = `main`.`comment_id` ) ) 그룹 기준 `main`.`comment_id` 주문 `main`.`comment_id` ASC;</pre> <p>使用以下数据库结构和内part值:</p> <pre class="brush:php;toolbar:false;">|------ |열|유형|Null|기본값 |------ |//**comment_id**//|int(10)|아니요| |게시물|int(10)|아니요| |작성자|int(10)|아니요| |replay_comment_id|int(10)|예|NULL |타임스탬프|int(10)|아니요| |코멘트|varchar(200)|아니요| == 테이블 post_comments에 대한 데이터 덤프 |19|107|12|NULL|1688801931|댓글 1 |20|107|12|NULL|1688801995|댓글 2 |21|107|13|20|1688801995|댓글 2에 대한 댓글 1개 테스트 |22|107|12|20|1688801995|댓글 2에 대한 2개의 댓글 테스트 |23|107|12|222|1688801995|다른 댓글에 대한 1개의 댓글 테스트</pre> <p>期望의 结果将返回ID는 19~20년의 评论, 因为它们是主要评论, 以及ID는 21~22년의 评论, 因为它们是ID는 20년이었습니다.论的子评论。不应返回ID为23 </p><p>in子查询中,如果我将main.comment_id替换为20,我可以得到我想要的结果,但是如果使사용main.comment_id ,则无法得到结果,我无法理解为什么。对于任何评论和想法,将不胜感激。</p>
P粉505917590P粉505917590477일 전391

모든 응답(1)나는 대답할 것이다

  • P粉521013123

    P粉5210131232023-07-25 13:32:08

    이 방법은 작동하지 않습니다. 19와 20은 main.replay_comment_id IS NULL을 충족하지만 21의 하위 쿼리, post_comments.replay_comment_id = 19에서는 결과가 제공되지 않습니다. 따라서 하위 의견 21번과 22번은 선택되지 않았습니다.

    다음 쿼리를 통해 결과가 나오는지 확인하세요.


    으아아아

    회신하다
    0
  • 취소회신하다