MySQL SELECT JOIN LIMIT row Comment per Post 和 LIMIT row Post per User
Posted
技术标签:
【中文标题】MySQL SELECT JOIN LIMIT row Comment per Post 和 LIMIT row Post per User【英文标题】:MySQL SELECT JOIN LIMIT row Comment per Post and LIMIT row Post per User 【发布时间】:2020-05-20 11:54:46 【问题描述】:我在数据库中有 3 个表,ig_user、ig_post 和 ig_komentar
ig_user
id_ig_user username nama
---------------------------------------
1 elizabeth elizabeth store
2 celmirashop celmira store
ig_post
----------------------------------
id_ig_post url_post username
1 a1b2c3 elizabeth
2 d1e2f3 elizabeth
3 g1h2i3 elizabeth
4 j1k2l3 celmirashop
5 m1n2o3 celmirashop
6 p1q2r3 celmirashop
ig_komentar
------------------------------------------
id_ig_komentar url_post nama_komentar
1 a1b2c3 arif
2 a1b2c3 budi
3 a1b2c3 candra
4 a1b2c3 doni
5 d1e2f3 ema
6 d1e2f3 fellaini
7 d1e2f3 gusti
8 d1e2f3 hussein
9 ...... ........
10 ...... ........
11 ...... ........
我想选择每个用户有 2 个帖子的数据,每个帖子有 3 个评论(来自表 ig_komentar)
我试试这个查询
SELECT p1.nama_komentar
, p1.isi_komentar
, p1.id_ig_komentar
, ip.username
, p1.url_post
FROM ig_komentar p1
JOIN ig_komentar p2
ON p1.url_post = p2.url_post
AND p2.id_ig_komentar >= p1.id_ig_komentar
JOIN ig_post ip
ON p1.url_post=ip.url_post
GROUP
BY p1.id_ig_komentar
, p1.url_post
HAVING COUNT(*) <= 3
ORDER
BY url_post
, id_ig_komentar
并在每个帖子中返回 3 条评论/评论。但是,我也需要用户。
如何查询在每个帖子中返回 3 条评论/评论,在每个用户中返回 2 条这样的帖子?
username url_post nama_komentar
elizabeth a1b2c3 arif
elizabeth a1b2c3 budi
elizabeth a1b2c3 candra
elizabeth d1e2f3 ema
elizabeth d1e2f3 fellaini
elizabeth d1e2f3 gusti
celmirashop j1k2l3 taufiq
celmirashop j1k2l3 uzumaki
celmirahsop j1k2l3 vivian
celmirashop m1n2o3 wahyu
celmirashop m1n2o3 xarman
celmirashop m1n2o3 yoris
用户名 elizabeth 有 2 个 url_post,在每个帖子中有 3 个 nama_komentar 用户名 celmirashop havw 2 url_post,在每个帖子中都有 3 nama_komentar
【问题讨论】:
另外,给用户分配一个 id,然后引用不同的列作为另一个表的外键,这有点奇怪。 请提供所需的输出。 听起来像是一个“分组”问题;查看标签。 @RickJames 我已经编辑了这个问题。我放了我想要的结果 【参考方案1】:考虑一个稍微不同的输出,但来自更简单的 SQL:
SELECT ( SELECT username FROM ig_post WHERE url_post = k.url_post ) AS username,
url_post,
SUBSTRING_INDEX(GROUP_CONCAT(nama_komentar), ',', 3) AS namas
FROM ig_komentar AS k
GROUP BY url_post;
【讨论】:
您的查询给出了结果,但我希望所有结果都作为一行,而不是连续以上是关于MySQL SELECT JOIN LIMIT row Comment per Post 和 LIMIT row Post per User的主要内容,如果未能解决你的问题,请参考以下文章