我们有一个WordPress站点,其中包含一个Q&A插件,需要移动到一个不同的主机。Q&A帖子只占总posts表的一小部分,所以我想使用SQL查询过滤掉它们。
我希望通过PhpMyAdmin为符合以下条件之一的行选择DB中的所有内容:
post_type = "answer"post_type = "question"21-revision-v1或10903-revision-v1,其中我想选择第一个数字部分与前两个需求中选择的帖子ID相匹配的帖子。我是SQL的完全新手,所以我从googling开始,找到了临时表的概念。这导致我创建了以下代码:
SELECT * INTO #QA
FROM `wp_posts` WHERE
`post_type` = "answer" OR
`post_type` = "question"但是,我得到了以下错误:
#1064 - Er是来自
wp_posts的de语法bij‘的ietspost_type=“回答”或post_type= regel 2中的“问题”极限
意思是“附近的语法有问题”..。
我所尝试的是否可行?
发布于 2020-09-30 10:36:23
您使用的语法最常与Server关联。MySQL使用(更常见的) create table as语法。而且,它还特别允许语法中的临时表。
因此,在MySQL中等效的是CREATE TABLE AS。
CREATE TEMPORARY TABLE QA AS
SELECT p.*
FROM wp_posts p
WHERE post_type IN ('answer', 'question');请注意,临时表是一种非常特定的表类型,仅存在于当前的“会话”中--例如,您与数据库的当前连接。它对其他用户不可见,当您重新连接到数据库时,它将消失。
发布于 2020-09-30 10:18:52
MySQL不支持写入表的select ... into ...语法,如文件中的精确点。
相反,您可以使用insert ... select
insert into `#qa`
select *
from wp_posts
where post_type in ('question', 'answer')发布于 2020-09-30 10:25:50
SELECT * INTO...语法用于创建新表。
如果这是您想要的,那么MySql的语法是:
CREATE TABLE tablename AS
SELECT * FROM `wp_posts`
WHERE `post_type` = 'answer' OR `post_type` = 'question'https://stackoverflow.com/questions/64135354
复制相似问题