gpt4 book ai didi

mysql - 按提供的 id 顺序获取记录,未提供的 id 应按字母顺序在这些 id 之后索引

转载 作者:行者123 更新时间:2023-11-30 22:37:18 25 4
gpt4 key购买 nike

我遇到了一个问题,我有一些 id,我需要首先将它们编入索引,以便它们按顺序排列(在数组中),其他记录按字母顺序获取,但要显示在它们之后。

例如我的sql查询如下:

SELECT *
FROM `users` `t`
ORDER BY field( `t`.`id` , 3694181860160, 3690073978560, 3692021760768, 3696518283776, 3694455712256, 3698627050368, 3694698638592, 3696980086784, 3693461701760 )

它应该整理记录 (3694181860160, 3690073978560, 3692021760768, 3696518283776, 3694455712256, 3698627050368, 3694698638592, 369698 0086784, 3693461701760) 首先和所有其余记录应按字母顺序显示在这些记录之后。

目前我正在从上述列表中获取记录,但顺序是随机的,其余记录不确定它们是如何排序的。

我也尝试过使用

获取结果

order by find_in_set 但它也不起作用。

请帮忙。

以下是我的表结构:

 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`fname` varchar(30) NOT NULL,
`lname` varchar(30) NOT NULL,
`email` varchar(50) NOT NULL,
`password` varchar(100) DEFAULT NULL,
`display_picture` varchar(255) DEFAULT NULL,
`last_login` datetime NOT NULL,
`reg_date` datetime NOT NULL,
`user_type` enum('admin','user') NOT NULL DEFAULT 'user',
`status` enum('0','1') NOT NULL DEFAULT '1',
`email_verified` enum('0','1') NOT NULL DEFAULT '0',
`feed_visibility` enum('public','relation','private') NOT NULL DEFAULT 'relation',
`groups` text NOT NULL,
`contact_allowance` enum('public','private','relation') NOT NULL DEFAULT 'public',
`search_allowance` enum('0','1') NOT NULL DEFAULT '1',
`country` int(11) NOT NULL,
`dob` date NOT NULL,
`gender` enum('male','female') DEFAULT NULL,
`fb_id` varchar(50) NOT NULL,
`state` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL,
`street` varchar(255) NOT NULL,
`is_admin` tinyint(1) NOT NULL DEFAULT '0',
`flame_name` varchar(50) NOT NULL,
`device_id` varchar(100) DEFAULT NULL,
`fav_cat` text,
`credits` int(20) DEFAULT NULL,
`privacy_setting` varchar(255) DEFAULT NULL,
`is_deleted` tinyint(4) NOT NULL DEFAULT '0',
`reason_to_delete_account` varchar(255) NOT NULL,
`verification_hash` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)

除了提到的 id,我希望其余的记录按 fname 和 lname 排序,如果它们不为空的话。

我还要提一下,括号中的 ID 是从另一个表中获取的。

我想我还应该提到,我正在尝试明智地获取用户的排名。用户排名计算并记录在 Mongo 数据库中的单独表中。而 'users' 表保存了 MySql 中所有用户的记录。排名的表结构很难描述。但是我们从排名表中获取 user_id 和排名字段。

我正在获取用户 ID,他们从排名表中明智地排名,并试图从用户表中获取用户信息,以便将它们显示在所有用户都明智地显示其排名的页面中。其中很少有用户没有达到排名,所以他们的Id还没有进入排名表。我想按照 fname、lname 的字母顺序对它们进行排序(如果它们有 fname、lname)

…………

我确实重新考虑了一下,只返回那些通过排名表获取的记录。因此,当排名表中有更多记录可用时,页面将显示更多记录。我正在使用查询作为

    SELECT * FROM `users` `t` where `t`.`id` in (3694181860160, 3690073978560, 3692021760768, 3696518283776, 3694455712256, 3698627050368, 3694698638592, 3696980086784, 3693461701760 )
ORDER BY field( `t`.`id` , 3694181860160, 3690073978560, 3692021760768, 3696518283776, 3694455712256, 3698627050368, 3694698638592, 3696980086784, 3693461701760 ) ASC

它运行良好,随着时间的推移,这将显示越来越多的用户。

最佳答案

我认为,这应该可以解决问题:

SELECT *
FROM `users` `t`
ORDER BY field( `t`.`id` , 3694181860160, 3690073978560, 3692021760768, 3696518283776, 3694455712256, 3698627050368, 3694698638592, 3696980086784, 3693461701760 ) DESC, `t`.`id` ASC;

如果您需要指定的 ID 与您输入的顺序相同,那么您将必须单独选择每个 ID,然后将所有结果合并在一起。

关于mysql - 按提供的 id 顺序获取记录,未提供的 id 应按字母顺序在这些 id 之后索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32141190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com