Eliminar y limitar en MySQL
Tengo una consulta que funciona para mostrar filas que contienen una clave meta específica.
select wp_woocommerce_order_itemmeta.*
from wp_posts, wp_postmeta
inner join wp_woocommerce_order_items, wp_woocommerce_order_itemmeta
where wp_posts.post_type = "shop_subscription"
and wp_postmeta.post_id = wp_posts.ID
and wp_postmeta.meta_key = "_shipping_country"
and wp_postmeta.meta_value = "FR"
and wp_woocommerce_order_items.order_id = wp_posts.ID
and wp_woocommerce_order_itemmeta.order_item_id = wp_woocommerce_order_items.order_item_id
and wp_woocommerce_order_itemmeta.meta_key = "_subtracted_base_location_taxes"
Quiero eliminar estas filas, pero con un límite. Tengo un error con esta consulta SQL.
DELETE wp_woocommerce_order_itemmeta.*
FROM wp_posts, wp_postmeta
inner join wp_woocommerce_order_items, wp_woocommerce_order_itemmeta
WHERE wp_posts.post_type = "shop_subscription"
and wp_postmeta.post_id = wp_posts.ID
and wp_postmeta.meta_key = "_shipping_country"
and wp_postmeta.meta_value = "FR"
and wp_woocommerce_order_items.order_id = wp_posts.ID
and wp_woocommerce_order_itemmeta.order_item_id = wp_woocommerce_order_items.order_item_id
and wp_woocommerce_order_itemmeta.meta_key = "_subtracted_base_location_taxes"
LIMIT 100
He leído que no se puede usar LIMIT directamente dentro de DELETE cuando se hace referencia a varias tablas al mismo tiempo. Soy nuevo en MySQL y estoy atascado. Cualquier ayuda sería apreciada.
Gracias
davy.ai
Puedes usar una subconsulta para seleccionar las filas que deseas eliminar y luego limitar los resultados de esa subconsulta. Aquí tienes un ejemplo:
En esta consulta, la subconsulta selecciona los valores
order_item_id
de las filas que cumplen las condiciones especificadas. Estas son las filas que quieres eliminar. Luego, la consulta externa elimina todas las filas dewp_woocommerce_order_itemmeta
que tienen unorder_item_id
que se encuentra en los resultados de la subconsulta. La palabra claveLIMIT
se usa en la subconsulta para limitar el número de filas seleccionadas.Ten en cuenta que las tablas
wp_posts
ywp_postmeta
todavía se utilizan en la subconsulta, pero las tablaswp_woocommerce_order_items
ywp_woocommerce_order_itemmeta
solo se utilizan en la consulta externa. Esto evita el problema de hacer referencia a múltiples tablas en una declaraciónDELETE
con unLIMIT
.