我在MySQL数据库中有一个表,它使用列item_id, tag_id
来关联项和标记。我需要编写一个查询,它接收一个项目列表和一个标签列表,并将每个标签应用于每个项目。
我目前的实现如下:
INSERT INTO item_tag (item_id, tag_id)
(SELECT tag.tag_id, item.item_id FROM tag, item
WHERE tag.tag_id in (:tags)
AND item.item_id in (:items))
这是有效的,但它很笨拙且不合适,我查询tag
和item
表来获取我已经在参数中已有的值(我已经知道了)这一点是有效的ID,所以我真的不需要检查是否存在。)
有更清洁的方法吗?例如,我想到类似(伪代码):
SELECT * FROM all_values_in_a_column(:tags)
JOIN all_values_in_a_column(:items)