gpt4 book ai didi

mysql - 具有特殊修改的 SQL 选择查询

转载 作者:行者123 更新时间:2023-11-29 06:44:37 26 4
gpt4 key购买 nike

我有一个问题,我不知道是否有任何方法可以仅借助 SQL 来解决它。我有一张表 users

+----+------------+
| ID | group_id |
+----+------------+
| 1 | 1;2;3 |
+----+------------+
| 2 | 1;2;3;4 |
+-----------------+
| 3 | 1;2;3;6 |
+-----------------+
| 4 | 1;2;6 |
+-----------------+

我知道它不是正常形式,但我无法更改它,因为它已被客户使用。

所以问题不在于向用户显示我没有的组。

例如:如果我为 ID = 3 的用户进行选择。我需要显示用户 1、3 和 4,因为用户 ID = 3 包含用户 ID = 1 的所有组,但我不应该显示用户ID = 2.

我的同事帮我找到最好的解决方案,如果有人感兴趣的话:

SELECT *
FROM `users`
WHERE CONCAT('[',REPLACE('1;2;3;6', ';', ']['), ']') LIKE CONCAT('%[', REPLACE(group_id,';',']%['),']%')

最佳答案

MySQL 有一个用于此类用例的内置命令,find_in_set。不幸的是,它只适用于以逗号分隔的值,不适用于以分号分隔的值,但这也很容易克服:

SELECT *
FROM users
WHERE FIND_IN_SET('3', REPLACE(group_id,';',','))

SQLFiddle

关于mysql - 具有特殊修改的 SQL 选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378657/

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