我正在收集相对较长的多维数组中有关标题和内容的30个帖子的信息,然后通过一个MySQL查询将它们全部放入数据库中。但是我的检查查询与该插入查询是分开的。我正在通过新帖子的标题检查相似的帖子,然后将其插入。如何将检查查询与插入的查询合并?
这是我大约30个帖子的多维数组:
array(
[0] => array(
[post_title] => $postTitle1,
[post_content] => $contentTitle1,
)
[1] => array(
[post_title] => $postTitle2,
[post_content] => $contentTitle2,
)
[N] => array(
[post_title] => $postTitleN,
[post_content] => $contentTitleN,
)
);
这是我根据新帖子标题进行的查询(对每个帖子都可以完成,并且可以正常运行):
SELECT post_title FROM x_post WHERE post_title=$newPostTitle
这是我的插入查询(工作正常):
INSERT INTO x_post (`post_title`, `post_content`, `date_created`, `user_id`)
VALUES ((((( My multidimensional array's information will be here after processing )))))
最后,这是我想要的查询,但是它不起作用(合并两个查询):
INSERT INTO x_post (`post_title`, `post_content`, `date_created`, `user_id`)
SELECT * FROM (SELECT $postTitle1, $content1, $time, $userId") AS tmp1, (SELECT $postTitle2, $content2, $time, $userId") AS tmp2, .......... and so on ........... , (SELECT $postTitle30, $content30, $time, $userId") AS tmp30 WHERE NOT EXIST (SELECT x_post.post_title FROM x_post WHERE x_post.post_title IN ($newPostTitle1, $newPostTitle2, ... and so on... , $newPostTitleN))
编写查询的最佳方法是什么? 实际上,我想检查所有30个帖子,如果一个查询中存在相似的帖子,然后插入那些不相似的帖子。 我知道这很复杂,但是查询很好。
非常感谢。
答案 0 :(得分:0)
您可以使用UNION ALL
来创建一组少FROM
的独立SELECT
,然后可以将它们用作一个派生表而不是30。而不是使用{在IN
子句中的{1}}中,您可以直接建立关联。
WHERE