기본 쿼리 및 하위 쿼리 - 하위 쿼리가 원하는 결과를 반환하지 않음
P粉505917590
2023-07-24 15:42:03
<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>
이 방법은 작동하지 않습니다. 19와 20은 main.replay_comment_id IS NULL을 충족하지만 21의 하위 쿼리, post_comments.replay_comment_id = 19에서는 결과가 제공되지 않습니다. 따라서 하위 의견 21번과 22번은 선택되지 않았습니다.
다음 쿼리를 통해 결과가 나오는지 확인하세요.
으아아아