Итак, я пытаюсь запустить операцию SQL:
INSERT INTO wp4t_postmeta (post_id, meta_key, meta_value)
SELECT a.post_id, '_attached_image', b.ID
FROM wp4t_postmeta a
INNER JOIN wp4t_posts b ON a.meta_value WHERE a.meta_key="_content_field_42"
= b.guid
По сути, мне нужна таблица wp4t_postmeta, обновленная с помощью идентификатора записи, мета-ключа (attach_image) и meta_value.
Мне нужно, чтобы значение meta_value было получено из идентификатора wp4t_posts, когда значение meta_value для meta_key _content_field_42 в wp4t_postmeta совпадает с идентификатором wp4t_posts.
Сначала у меня заканчивался размер в каталоге tmp каждый раз, когда я пытался запустить егопоэтому я добавил ограничение для его проверки:
INSERT INTO wp4t_postmeta (post_id, meta_key, meta_value)
SELECT a.post_id, '_attached_image', b.ID
FROM wp4t_postmeta a
INNER JOIN wp4t_posts b ON a.meta_value WHERE a.meta_key="_content_field_42"
= b.guid LIMIT 10;
Теперь я получаю сообщение об ошибке "# 1062 - Дублирующая запись '0' для ключа 'PRIMARY' '
Я понимаю, что этотаблица автоинкремента meta_id из wp4t_postmeta, но я подумал, что если бы я ее не включил, она бы автоматически добавлялась?
Что я здесь не так делаю?
Кроме того, есть лилучший способ написать этот запрос?
Обновить .... Достигается прогресс:
INSERT INTO wp4t_postmeta (post_id, meta_key, meta_value)
SELECT postmeta.post_id, '_attached_image', posts.ID
FROM wp4t_postmeta AS postmeta
INNER JOIN wp4t_posts AS posts ON postmeta.meta_value = posts.guid
WHERE postmeta.meta_key="_content_field_42"
AND posts.post_type="attachment"
РЕДАКТИРОВАТЬ .... Все еще развивается:
INSERT INTO wp4t_postmeta (post_id, meta_key, meta_value)
SELECT postmeta.post_id, '_attached_image', posts.ID
FROM wp4t_postmeta AS postmeta
INNER JOIN wp4t_posts AS posts ON postmeta.meta_value = posts.guid
AND postmeta.meta_key = '_content_field_42'
WHERE posts.post_type="attachment"