对mysql中的加入表应用限制[重复]

Posted

技术标签:

【中文标题】对mysql中的加入表应用限制[重复]【英文标题】:Apply a limit on joining table in mysql [duplicate] 【发布时间】:2015-11-30 05:37:44 【问题描述】:

我有两个表用户和查询。用户可以发布多个查询。

mysql 表架构:-

CREATE TABLE `users` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `email` varchar(100) NOT NULL,
  `password` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `queries` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `address` text,
  `city` varchar(100) NOT NULL,
  `state` varchar(100) NOT NULL,
  `zipcode` int(11) NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

我想对其应用限制,即查询从查询​​表中为每个用户获取 5 个查询。

我应该如何为此编写查询?

【问题讨论】:

SELECT * FROM queries as qry left join users as usr on usr.id = qry.user_id limit 5 =====你也可以使用order by子句 【参考方案1】:

试试看-

SELECT x.*
FROM (SELECT t.user_id,t.id,
               CASE 
                 WHEN @category != t.user_id THEN @rownum := 1 
                 ELSE @rownum := @rownum + 1 
               END AS rank,
               @category := t.user_id AS var_category
          FROM queries t
          JOIN (SELECT @rownum := NULL, @category := '') r     
      ORDER BY t.user_id,t.id) X
      WHERE x.rank<=5

【讨论】:

以上是关于对mysql中的加入表应用限制[重复]的主要内容,如果未能解决你的问题,请参考以下文章

加入仅包括表中的最大日期 [重复]

mysql中的约束

php和mysql如何加入表[重复]

MySQL:加入表并根据另一列上的聚合函数从一行返回一列[重复]

在mysql数据库上加入查询[重复]

MySQL 计数并加入以返回有序列表