【发布时间】:2021-09-29 13:12:15
【问题描述】:
我想在我的帖子上有多个不同的标签,以便以后过滤它们。我认为最好的方法是拥有下一张桌子:
POSTS:
+----+-------------+
| ID | Other stuff |
+----+-------------+
| * | * |
+----+-------------+
TAGS:
+----+------+
| ID | TAGS |
+----+------+
| * | * |
+----+------+
AND TAG_POSTS:
+---------+--------+
| POST_ID | TAG_ID |
+---------+--------+
| * | * |
+---------+--------+
现在我已经设置好了,所以当有人发布数据时,经过一些检查后,数据只是插入到帖子表中。
如果我理解正确,我需要检查每个标签是否已经存在一个选择,如果不存在则插入它。但是如何在 tag_post 表中输入正确的值呢?
INSERT INTO posts SET value1, value2... ;
SELECT @@IDENTITY
这是为了插入我的帖子而不是获取它的 ID。
这将在一个 for 循环中,并且会为每个输入的标签插入一次。
SELECT id FROM tags WHERE tag = tag;
//if results get returned then its already in and you have the ID
INSERT INTO tags SET tag; SELECT @@IDENTITY
//this is for inserting the tag and getting its id if it's not in
将这两个 ID 保存在一个变量中并将其插入到中间的表格中就可以了吗?
还有更简单的方法吗?对我来说,为插入调用 MySQL 10 次以上似乎有点多。我将使用 NodeJS 来执行此操作。
【问题讨论】:
-
也许看看
INSERT INTO ... VALUES (...),(...)语法? -
MySQL 版本??
-
插入效果很好。我只是好奇是否有更简单的方法可以插入中间表。我在版本 10.4.19-MariaDB