我有3个这样的表:
Table 1 Table 3 Table 2
============ ======================= ==============
Name -> ID Table 1 ID -> Table 2 ID Name -> ID
"Name1" -> 1 1 -> 1 "object1" -> 1
"Name2" -> 2 1 -> 2 "object2" -> 2
"Name3" -> 3 1 -> 3 "object3" -> 3
"Name4" -> 4 2 -> 2 "object4" -> 4
"Name5" -> 5 3 -> 4 "object5" -> 5
我需要编写一个存储过程来了解表 1 中的哪些元素恰好包含表 2 中给定的 ID。
例如查找包含 1、2 和 3 的名称。结果将是 ID 1 -> 名称 1。
并且要查找的项目可以是 N 个元素。
谁能帮我解决这个问题?
我试过这样的事情:
SET @myArrayOfValue = '2,5,2,23,6,';
WHILE (LOCATE(',', @myArrayOfValue) > 0)
DO
SET @value = ELT(1, @myArrayOfValue);
SET @STR = SUBSTRING(@myArrayOfValue, 1, LOCATE(',',@myArrayOfValue)-1);
SET @myArrayOfValue = SUBSTRING(@myArrayOfValue, LOCATE(',', @myArrayOfValue) + 1);
INSERT INTO `TemporaryTable` VALUES(@STR);
END WHILE;
我想创建一个临时表并比较要搜索的表中的哪些值,但在 LOCATE() 上出现错误。另外我认为每次都创建一个临时表是错误的。