Estoy ejecutando esta consulta SQL:
SELECT wp_woocommerce_order_items.order_id As No_Commande
FROM wp_woocommerce_order_items
LEFT JOIN
(
SELECT meta_value As Prenom
FROM wp_postmeta
WHERE meta_key = '_shipping_first_name'
) AS a
ON wp_woocommerce_order_items.order_id = a.post_id
WHERE wp_woocommerce_order_items.order_id =2198
Y me sale este error:
# 1054 - Columna desconocida 'a.post_id' en 'cláusula on'.
Creo que mi código es bastante simple, pero no puedo corregirlo. ¿Qué estoy haciendo mal?

Reconozco que la respuesta funciona y ha sido aceptada, pero hay una forma mucho más limpia de escribir esa consulta. Probado en mysql y postgres.
SELECT wpoi.order_id As No_Commande FROM wp_woocommerce_order_items AS wpoi LEFT JOIN wp_postmeta AS wpp ON wpoi.order_id = wpp.post_id AND wpp.meta_key = '_shipping_first_name' WHERE wpoi.order_id =2198fuente
EXPLAIN SELECT ...o para MSSQLSET SHOWPLAN_ALL ONoSET SHOWPLAN_XML ONpara ver cómo se recuperan las filas. En MySQLused filesort,used temporaryson lentos y deben evitarse. En cuanto a la subconsulta unida, requiere recuperar todas las filas que coincidan con el valor de meta_key de la tabla wp_postmeta antes de unirse a los ID de publicación / pedido. Por lo tanto, debería ser seguro asumir que sería más rápido hacer coincidir los ID de pedido / publicación y meta_key. Generalmente, una subconsulta como la que usó es mejor con unaORDER BYLIMITque no se puede filtrar de la consulta principal.Criteria on Joinsqlfiddle.com/#!2/e84fa/5 ySubquery on Joinsqlfiddle.com/#!2/e84fa/3 Tenga en cuenta que lasSubquery on Join22 filas recuperadas de wp_postmeta, mientras que laCriteria on Joinúnica recuperada 1 de wp_postmeta.