我正在一个项目(带有自定义表的wordpress)上,其中有商人表和另一个带有“ merchant_meta”名称的表,以维护其他详细信息,例如上次登录,账单日期,令牌等,如以下屏幕截图所示
我有以下查询以获取所有商人
$merchants = $wpdb->get_results( "SELECT * FROM $table_name ORDER BY id DESC" );
但是,当我将其更改为following以获取last_login元密钥的值时,它将仅返回具有此字段值的商户。
$merchants = $wpdb->get_results( "SELECT wp_merchants.*,wp_merchant_meta.meta_value FROM wp_merchants LEFT JOIN wp_merchant_meta ON wp_merchant_meta.merchant_id = wp_merchants.id WHERE wp_merchant_meta.meta_key = 'last_login' ORDER BY id DESC" );
如何获取所有具有last_login值的商人?
答案 0 :(得分:1)
竞争wp_merchant_meta.meta_key = 'last_login'
是表并集的条件,应该在JOIN语句中
SELECT
wp_merchants.*,
wp_merchant_meta.meta_value
FROM wp_merchants
LEFT JOIN wp_merchant_meta ON wp_merchant_meta.merchant_id = wp_merchants.id
AND wp_merchant_meta.meta_key = 'last_login'
答案 1 :(得分:1)
如果您想获得所有商人,无论它们是否具有last_login
值,都需要删除WHERE
子句,该子句会将您的LEFT JOIN
变成{{ 1}}(请参见manual)并将该条件添加到INNER JOIN
子句中,即
ON