gpt4 book ai didi

PHP 从数据库中选择在 ID 组中找到 ID 的行

转载 作者:行者123 更新时间:2023-12-01 00:15:41 25 4
gpt4 key购买 nike

我有 3 个雇主 ID:1、2 和 3。我通过在数据库中添加一行并在“for_emp”列中为每个雇主生成任务,我插入了我想为其分配此任务的 ID,并且可以是所有 3 个他们用逗号隔开。所以假设我有一个任务,“for_emp”是“1,2,3”,即雇主 ID。如果我想选择 ID 2 的所有任务,我是否可以从 ID 为“1,2,3”的行中选择并只匹配“2”?如果没有,您如何建议我将我的 emp ID 插入数据库的一行中?数据库是 MySQL。

有什么想法吗?谢谢。

最佳答案

不要那样做,你应该normalize你的数据库。

您想要做的是有一个表,例如task,然后是task_assigneetask_assignee 将包含字段 task_iduser_id。如果任务有例如。三个受让人(ID 1、2 和 3),然后您将在 task_assignee 表中为那个 task 创建三行,如下所示:

+--------+---------+
|task_id | user_id |
+--------+---------+
| 1 | 1 [
| 1 | 2 [
| 1 | 3 [
+--------+---------+

然后只需查询 task_assignee 表即可找到分配给给定用户的所有任务。

下面是如何获取 user_id 2 的所有任务的示例:

SELECT t.* FROM task AS t INNER JOIN task_assignee AS ta WHERE ta.user_id = 2

编辑。

正如相关说明,即使您没有以正确的方式进行操作(我在之前的回答中对此进行了描述),使用诸如 LIKE最优解。如果您确实存储了逗号分隔值列表,并且需要检查是否例如。值 2 在列表中,您可以使用 MySQL 的 FIND_IN_SET 函数:

SELECT * FROM task WHERE FIND_IN_SET(2, for_emp)

但除非您别无选择(例如,您正在使用某人糟糕的数据库设计),否则您不应该这样做,因为它的效率更低,并且不会让您为员工 ID 编制索引。

关于PHP 从数据库中选择在 ID 组中找到 ID 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3870878/

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