Я создал сохраненную функцию Mysql для получения всех дочерних идентификаторов по родительскому идентификатору, и она отлично работает, тип возвращаемого значения этой функции - varchar, и она возвращает дочерние идентификаторы в виде строки, разделенной запятыми, например (2 ,3 ,4 ,5 ,7 ,8 ,9).
Когда я помещаю их в оператор IN(), он приносит запись, относящуюся к первому элементу (2).
Вот запрос:
SELECT * FROM department where id in(getChildDepartment(1))
Примечание:1, который я ввел в параметр, является идентификатором родительского отдела.
Заранее спасибо.
Я сделал это, цифры, которые вы видите, - это идентификаторы






IN принимает не строку значений, разделенных запятыми, а список значений. Причина возврата одной строки заключается в том, что происходит неявное преобразование типа из строки в целое число, поскольку столбец id, скорее всего, имеет тип данных INTEGER.
Либо измените возвращаемые значения, либо используйте:
SELECT * FROM department WHERE FIND_IN_SET(id, REPLACE(getChildDepartment(1), ' ', ''));
Спасибо @revo, все работает.
INне работает со строками, он работает со столбцами. Вы должны вернутьidстрок изgetChildDepartment.