简体   繁体   English

将查询结果插入同一表

[英]Insert results from query into the same table

(For WordPress folks: I am creating a set of new "custom field"s called sidebar_buy_now by combining pairs of existing "custom field"s.) (对于WordPress人士:通过合并成对的现有“自定义字段”,我正在创建一组称为“ sidebar_buy_now”的新“自定义字段”。)

I have a table: wp_postmeta with 4 fields: meta_id , post_id , meta_key , meta_value . 我有一张桌子: wp_postmeta有4个字段: meta_idpost_idmeta_keymeta_value

meta_id is the primary key and should auto-increment. meta_id是主键,应自动递增。

I have a working SELECT query which produces the desired result for the last 3 fields: post_id , meta_key , meta_value : 我有一个有效的SELECT查询,该查询为最后3个字段产生所需的结果: post_idmeta_keymeta_value

SELECT L.`post_id`, "sidebar_buy_now" AS "meta_key",
CONCAT(L.`meta_value`, ' | ',R.`meta_value`) 
AS "meta_value" FROM `wp_postmeta` L INNER JOIN `wp_postmeta` R
ON L.`post_id` = R.`post_id`
AND L.`meta_key` = 'sidebar_buy_now_url' 
WHERE R.`meta_key` = 'sidebar_buy_now_title'

I want to insert the results of this query into the wp_postmeta table while auto-incrementing meta_id . 我想在自动递增meta_id同时将此查询的结果插入wp_postmeta表中。

This is the INSERT query I am trying which does not work: 这是我正在尝试的INSERT查询,不起作用:

INSERT into `wp_postmeta` (`post_id`,`meta_key`,`meta_value`) 
SELECT L.`post_id`, "sidebar_buy_now" AS "meta_key", 
CONCAT(L.`meta_value`, ' | ',R.`meta_value`) AS "meta_value" FROM `wp_postmeta` L INNER JOIN `wp_postmeta` R ON L.`post_id` = R.`post_id`
AND L.`meta_key` = 'sidebar_buy_now_url' WHERE R.`meta_key` = sidebar_buy_now_title'

Getting this error: 收到此错误:

#1136 - Column count doesn't match value count at row 1 . #1136 - Column count doesn't match value count at row 1

Perhaps because I don't know how to specify an auto-incrementing meta-id in the SELECT... (?) Anyone know how to fix this? 也许因为我不知道如何在SELECT ...(?)中指定自动递增的meta-id?有人知道如何解决此问题吗?

INSERT into wp_postmeta (post_id,meta_key,meta_value)
SELECT
   L.post_id
   ,"sidebar_buy_now" AS "meta_key"
   ,CONCAT(L.meta_value, ' | ',R.meta_value) AS "meta_value"
FROM
   wp_postmeta L
   INNER JOIN wp_postmeta R
   ON L.post_id = R.post_id AND L.meta_key = 'sidebar_buy_now_url'
WHERE R.meta_key = 'sidebar_buy_now_title'

Because meta_id is an auto increment column you don't actually insert anything into you. 因为meta_id是一个自动增量列,所以您实际上没有在其中插入任何内容。 You simply omit it from the insert statement. 您只需在插入语句中将其忽略即可。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM