对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 * FROMqueries
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中的加入表应用限制[重复]的主要内容,如果未能解决你的问题,请参考以下文章