Не делайте этого так, вам следует нормализовать вашу базу данных.
Что вы хотите сделать, так это иметь таблицу, такую как task
, а затем task_assignee
. task_assignee
будет иметь поля task_id
и user_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)
Но вы не должны делать этого, если у вас нет выбора (например, вы работаете с чьей-то дерьмовой структурой БД), потому что это более неэффективно и не позволит вам проиндексировать идентификатор сотрудника.
person
reko_t
schedule
06.10.2010