簡體   English   中英

MySQL查詢從1個表中獲取行以及從其他表中獲取where子句的特定列值

[英]Mysql query to get row from 1 table and specific column value with where clause from other table

我正在一個項目(帶有自定義表的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值的所有商家?

條件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'

如果要獲取所有商人,無論他們是否具有last_login值,都需要刪除WHERE子句,該子句將LEFT JOIN變成INNER JOIN (請參閱手冊 ),並將該條件添加到ON子句中,即

$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 AND wp_merchant_meta.meta_key = 'last_login'
                                 ORDER BY id DESC" );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM