假设我有下面的表,其中包含示例数据this mysql link,在Go项目中,我通过sql select * from users limit size offset (index-1)*size
获得users
的列表
但是现在10个数据项中的一个必须具有rank_value
大于0的a记录,换句话说,每页具有10个记录,9个记录来自select * from users limit 9 where ran_value = 0
,1个记录来自select * from users limit 1 > 0
。
我被困在这个,如何查询限制10记录从不同的条件在MySQL或去,非常感谢任何建议.
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT '',
`age` int(11) NOT NULL DEFAULT '0',
`rank_value` int(11) NOT NULL DEFAULT '0',
`insert_at` bigint NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
// init
db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
if err != nil {
log.Fatal(err)
}
// create dbr session
sess := dbr.NewConnection(db, nil)
// query list
var users []User
_, err = sess.Select("*").From("users").OrderBy("insert_at desc").Offset((Index - 1) * Size).Limit(Size).Load(&users)
if err != nil {
log.Fatal(err)
}
for _, user := range users {
fmt.Println(user.Name)
}
1条答案
按热度按时间7gcisfzg1#
将LIMIT与UNION组合使用可能是您所需要的。这将允许您检索
condition_a
下的n
行和condition_b
下的m
行所以你的案子,