如何仅对MySQL查询中的联接表应用限制?

j

我有两个名为类别和内容的表(每个类别可以有很多内容),这是我的查询

SELECT * FROM categories ca 
LEFT JOIN content co ON co.cat_id=ca.id

我想对其进行查询以获取每个类别的10个内容的限制。

我应该如何查询?

丹妮·埃雷拉(Dani Herrera)

rankMySQL上没有功能。

您应该使用变量。为你写了这个摘录将其转换为您自己的模式:

MySQL 5.6模式设置

--c are categories
create table c ( id int, n varchar(100) );

--p are contents
create table p ( id int, fk_c int, n varchar(100) );

insert into c values
(1, 'A'),
(2, 'B');

insert into p values
(1,1,'a'),
(2,1,'b'),
(3,1,'d'),                          <-- id=3, over the limit set to 2
(4,2,'e');

查询

select * from (
  SELECT p.*, 
         @n := ( case when @c <> c.id then 1 else @n+1 end) as "num",
         @c := c.id as "prev c"
    FROM c left outer join p on c.id = p.fk_c, 
    (SELECT @n := 0, @c = 0)  r
) p  
    where p.num <= 2                <-- limiting to 2.

结果

| id | fk_c | n | num | prev c |
|----|------|---|-----|--------|
|  1 |    1 | a |   1 |      1 |
|  2 |    1 | b |   2 |      1 |
                                     <-- id=3 missing ;)
|  4 |    2 | e |   1 |      2 |  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

mysql如何计算联接表

MySQL Update内部联接表查询

如何优化此MySql查询-联接3个表?

如何在MySQL中订购/限制内部联接?

如何编写选择查询以使用PHP MySQL中的外键和联接从5个表中获取数据?

如何在查询集中包括联接表中的字段?

如何在Django中执行MySQL的联接查询?

如何在laravel中对联接表进行选择查询?

如何限制离散块中的查询?的MySQL

如何在我的大联接Mysql查询中使用where子句限制结果?

如何联接3表并在子查询中执行并集?

如何在MYSQL查询中使用聚合函数联接表?

如何从PHP的单个表中联接Mysql中具有多个条件的多个查询?

如何修复MySQL更新查询中的联接错误

如何强制联接顺序以提高MYSQL中的查询性能?

如何限制带有联合表的子查询[MySQL]

如何在子查询的联接中使用联接表中的列

如何从mysql中的联接表中查找单行数据?

如何对MySQL进行联接查询

MySQL如何在使用多个联接时按特定ID限制查询

MySQL查询的联接表中的GROUP BY,COUNT()

如何优化此MYSQL查询-联接多个表

如何按联接表的行(而非列)中的值对mysql查询结果排序?

mysql中的性能与子查询和限制联接

如何在此方案的mysql中执行联接查询

基于联接表的MySQL限制结果

MYSQL限制左联接查询

如何在连接多个表的查询中优化MySQL“按限制1排序”?

如何在存储在其他表 MySQL 中的查询中应用 where 条件