0

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

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' a booking_no 应该返回 'General' 但它不会。请建议。

4

1 回答 1

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 条件匹配的所有记录,并与第二个表中的记录(如果未找到匹配项,则为空记录)。

于 2012-11-10T07:27:19.747 回答