Wordpress WPDB SQL - 如何查询两个 meta_key
Wordpress WPDB SQL - How to query two meta_key
我正在尝试使用我的代码同时查询两个元键:
SELECT * FROM wp_postmeta
WHERE meta_key = "listing_location_enabled"
AND meta_value = "yes"
AND meta_key = "listing_location_country"
AND meta_value = "INDIA"
但是没有显示任何结果。我的查询是否正确?
不,您的查询不正确。 (那些元表是臭名昭著的 xxx 脖子痛,无法正确使用。)您需要这种查询模式。它将 wp_postmeta 连接到自身。
SELECT lle.post_id,
lle.meta_value listing_location_enabled.
llc.meta_value listing_location_country
FROM wp_postmeta lle
JOIN wp_postmeta llc ON lle.post_id = llc.post_id
WHERE lle.meta_key = 'listing_location_enabled'
AND lle.meta_value = 'yes'
AND llc.meta_key = 'listing_location_country'
AND llc.meta_value = 'INDIA'
或者,更好的是,如果您正在为 WordPress 编写代码,请使用它的 WP_Meta_Query 工具。
$q = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
'lle' => array(
'key' => 'listing_location_enabled',
'value' => 'yes',
),
'llc' => array(
'key' => 'listing_location_country',
'value' => 'INDIA',
),
)
) );
我正在尝试使用我的代码同时查询两个元键:
SELECT * FROM wp_postmeta
WHERE meta_key = "listing_location_enabled"
AND meta_value = "yes"
AND meta_key = "listing_location_country"
AND meta_value = "INDIA"
但是没有显示任何结果。我的查询是否正确?
不,您的查询不正确。 (那些元表是臭名昭著的 xxx 脖子痛,无法正确使用。)您需要这种查询模式。它将 wp_postmeta 连接到自身。
SELECT lle.post_id,
lle.meta_value listing_location_enabled.
llc.meta_value listing_location_country
FROM wp_postmeta lle
JOIN wp_postmeta llc ON lle.post_id = llc.post_id
WHERE lle.meta_key = 'listing_location_enabled'
AND lle.meta_value = 'yes'
AND llc.meta_key = 'listing_location_country'
AND llc.meta_value = 'INDIA'
或者,更好的是,如果您正在为 WordPress 编写代码,请使用它的 WP_Meta_Query 工具。
$q = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
'lle' => array(
'key' => 'listing_location_enabled',
'value' => 'yes',
),
'llc' => array(
'key' => 'listing_location_country',
'value' => 'INDIA',
),
)
) );