Pertanyaan utama dan subkueri - subkueri tidak mengembalikan hasil yang diingini
P粉505917590
2023-07-24 15:42:03
<p>我有以下用于评论系统的SQL查询。</p>
<pre class="brush:php;toolbar:false;">SELECT
`utama`.`comment_id`,
`utama`.`komen`,
`utama`.`cap masa`,
`utama`.`replay_comment_id`,
COUNT(`replay`.`comment_id`) SEBAGAI mainan semula
DARIPADA `posts_comments` SEBAGAI `utama`
KIRI SERTAI `posts_comments` SEBAGAI `replay` PADA `replay`.`replay_comment_id` = `main`.`comment_id`
DI MANA
`utama`.`post` = "107" DAN (`main`.`replay_comment_id` ADALAH NULL ATAU `main`.`comment_id` dalam ( PILIH
`posts_comments`.`comment_id`
DARI
`posts_comments`
DI MANA
`posts_comments`.`replay_comment_id` = `main`.`comment_id` ) )
KUMPULAN OLEH
`utama`.`comment_id`
PERINTAH OLEH
`utama`.`comment_id` ASC;</pre>
<p>使用以下数据库结构和内部值:</p>
<pre class="brush:php;toolbar:false;">|------
|Lajur|Jenis|Nol|Lalai
|------
|//**komen_id**//|int(10)|Tidak|
|post|int(10)|Tidak|
|pengarang|int(10)|Tidak|
|replay_comment_id|int(10)|Ya|NULL
|cap waktu|int(10)|Tidak|
|komen|varchar(200)|Tidak|
== Lambakan data untuk posts_comments jadual
|19|107|12|NULL|1688801931|ulasan 1
|20|107|12|NULL|1688801995|ulasan 2
|21|107|13|20|1688801995|uji 1 ulasan untuk ulasan 2
|22|107|12|20|1688801995|uji 2 ulasan untuk ulasan 2
|23|107|12|222|1688801995|uji 1 ulasan untuk ulasan lain</pre>
<p>期望的结果将返回ID为19和20的评论,因为它们是主要评论,以及ID为21和以及ID为21和为为它们是主要评论,以及ID为21和为的记为 ID22的评不0的评论的子评论。不应返回ID为23的评论。现在的查询只返回主要评论。</p><p>在子查询中,如果我将main.comment_id_id/id_id我想要的结果,但是如果使用main.comment_id ,则无法得到结果,我无法理解为什么。对于任何评论和想法,将不胜感激。<
Kaedah ini tidak akan berfungsi. 19 dan 20 memenuhi main.replay_comment_id IS NULL, tetapi dalam subquery untuk 21, posts_comments.replay_comment_id = 19, ini tidak memberikan sebarang hasil. Oleh itu, subkomen 21 dan 22 tidak dipilih.
Sila semak pertanyaan berikut untuk melihat sama ada ia memberi anda hasil.