MYSQL 利用FIND_IN_SET进行排序,

-- MYSQL 利用FIND_IN_SET进行排序,
-- MySQL会自动按主键自增排序,如何实现按给定的顺序排序呢?
SELECT * FROM table_yours WHERE id in('str1','str2','str3') ORDER BY FIND_IN_SET(id,'str1,str2,str3')
SELECT * FROM table_yours WHERE FIND_IN_SET(id,'str1,str2,str3') ORDER BY FIND_IN_SET(id,'str1,str2,str3')

-- 如下的排序结果就是按照FIND_IN_SET中的字符串顺序来的,不信你试试,因为:FIND_IN_SET返回的结果0 1 2 3 ......

SELECT
    *
FROM
    t_xxx_bag
WHERE
    id IN (
        '1115427324643549184',
        '1116507795656548352',
        '123456',
        '234567',
        '345678'
    )
ORDER BY
    find_in_set(
        id,
        '1115427324643549184,1116507795656548352,123456,234567,345678'
    )

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL 中的 FIND_IN_SET 函数用于查找一个字符串中是否包含指定的子字符串,它的语法如下: ``` FIND_IN_SET(str, strlist) ``` 其中,str 是要查找的子字符串,strlist 是要在其中查找的字符串列表,它们都是字符串类型。这个函数会返回一个整数值,表示 str 在 strlist 中的位置,如果没有找到,则返回 0。 FIND_IN_SET 函数通常用于将多个选项存储在一个字段中,例如在一个用户表中存储该用户喜欢的颜色(以逗号分隔),然后使用 FIND_IN_SET 函数查找是否包含指定颜色。 例如,假设有一个用户表 user,其中有一个字段 colors 存储了用户喜欢的颜色,它们以逗号分隔,如下所示: ``` +----+---------+------------+ | id | name | colors | +----+---------+------------+ | 1 | Alice | red,green | | 2 | Bob | blue,red | | 3 | Charlie | green | +----+---------+------------+ ``` 现在,我们想要查找所有喜欢红色的用户,可以使用以下 SQL 语句: ``` SELECT * FROM user WHERE FIND_IN_SET('red', colors) > 0; ``` 这个 SQL 语句会返回 id 为 1 和 2 的两条记录,因为它们的 colors 字段包含了红色这个选项。 总的来说,FIND_IN_SET 函数适用于需要在一个字段中存储多个选项的场景,并且需要进行筛选和查询。但是,如果需要在一个字段中存储大量的选项,或者需要对选项进行排序和统计等操作,则不建议使用 FIND_IN_SET 函数,而是应该使用关系型数据库中的更加规范化的数据结构来存储选项,例如使用多个表或者使用 JSON 数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值