当找不到密钥id时,MySQL不返回结果

时间:2012-11-10 06:38:25

标签: mysql key inner-join

我有一行mySQL代码来显示一组与两个表链接的结果。通过密钥ID相关。当没有键与另一个表匹配时会出现问题 - 没有结果显示。所以我的想法是我想在mySQL中有一些条件,如if(id ='999','General','concat(没有内连接的东西))。请查看我的代码:

的MySQL

SELECT if( log_db.log_bid = '999', 'General', 
CONCAT( 'B', bk_rtype, '-', LPAD( bk_id, 5, '0' ) ) ) AS booking_no,
 booking_db.bk_flg1 AS flight
FROM log_db
INNER JOIN booking_db ON booking_db.bk_id = log_db.log_bid
WHERE log_db.log_stts = '1'
ORDER BY log_db.log_id DESC

根据我的代码。我希望如果log_bid ='999',booking_no应该返回'General',但它不会。请建议。

1 个答案:

答案 0 :(得分:2)

听起来像你想要这样的LEFT OUTER JOIN。

SELECT log_db.log_bid,
   CASE WHEN booking_db.bk_id IS NULL THEN 'General' 
   ELSE CONCAT( 'B', bk_rtype, '-', LPAD( bk_id, 5, '0' ) ) END AS booking_no,
   booking_db.bk_flg1 AS flight
FROM log_db
LEFT OUTER JOIN booking_db ON booking_db.bk_id = log_db.log_bid
WHERE log_db.log_stts = '1'
ORDER BY log_db.log_id DESC

这将为您提供第一个表中与您的where条件匹配的所有记录与第二个表中的记录(如果未找到匹配则为空记录)。