php - 对mysql中的连接表应用限制

标签 php mysql

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

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 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

关于php - 对mysql中的连接表应用限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32391658/

相关文章:

php - 特殊字符无法插入数据库

mysql - 合并操作如何与一对多关系一起工作 - JPA

php - 使用iOS前端将空白数据插入MYSQL数据库

php - 具有匿名用户的数据库

php - onclick 跳转到页面顶部(需要停止此操作)

php - WSDL 的问题

php - 使用mysql设置多源复制

mysql - Spring @Transactional 死锁

php - 上传查询 mySQL

php - 检查表中的多行,如果行匹配,则将其计为 1