MySQL通过单个单元格中的多个ID加入查询

时间:2018-10-22 05:21:41

标签: php mysql pdo

我有以下用于模板表的数据(样本)

TempName, ItemID
Test1, 1/5/6/8/11
Test2, 2/4/5/8/10

因此,我想进行一个SQL查询,该查询将与项目表联接并返回在ItemID字段中匹配/存在的所有数据行

类似: 选择* From Items.Item = ID.Template.ItemID的项目内部联接模板,其中模板名称='Test1';

我无法确定正确的sql查询,因此,现在我正在使用for循环,但是我更喜欢使用衬板或更好的查询/脚本来处理该问题。

当前我的代码如下:

Select ItemID From Template Where Name = 'Test1';
$strItems = explode('/', ItemID)
foreach($strItem in $strItems)
{
 select * from Items where ID = $strItem
}

那不是漂亮/格式正确的代码,而是显示我现在的工作方式。 但我正在寻找更好的方法:)

最好的问候

1 个答案:

答案 0 :(得分:1)

您可以在此处使用FIND_IN_SET,只需一个查询:

SELECT i.*
FROM Items i
INNER JOIN Template t
    ON FIND_IN_SET(i.ID, REPLACE(t.ItemID, '/', ',')) > 0
WHERE
    t.Name = 'Test1';

Demo

但是请注意,根本不像在Template表中那样存储未标准化的数据。最好将ItemID值存储在单独的行中。