SQL select 没有该值时的默认值

SQL select default value when there is no such value

我在数据库中有以下 tables。

帐户 TABLE

  User_id|  first_name |  last_name |   age   |        
  _______|_____________|____________|_________|
     1   |    LeBron   |   James    |    28   |
     2   |    Kobe     |   Bryent   |    29   |
     3   |    Kevin    |   Durant   |    30   |
     4   |    Jim      |   Jones    |    31   |
     5   |    Paul     |   Pierce   |    32   |
     6   |    Jeremy   |   Lin      |    33   |

USER_BOOKMARK TABLE

  User_id|  Bookmarked_user_id
  _______|____________________
     1   |     2        
     1   |     3      
     1   |     4
     2   |     1        
     2   |     4     
     3   |     1
     5   |     6        

我想select ACCOUNT table 的用户信息以及那个人是否在我的书签列表

ex)勒布朗詹姆斯想知道林书豪的信息,林书豪是否在他的书签列表中。

想要的结果 =>

  User_id|  first_name |  last_name |   age   | isBookmarked |       
  _______|_____________|____________|_________|______________|      
     6   |    Jeremy   |     Lin    |    33   |      0       |  =>0 means no.

  *It must return only one row.
  *If user is on my bookmark list, value of isBookmarked is my user_id.

我尝试了什么=>

 SELECT ACCOUNT.user_id, ACCOUNT.firstname, ACCOUNT.lastname, coalesce(User_Bookmark.user_id, 0) as isBookmarked
 FROM Account LEFT OUTER JOIN User_Bookmark ON Account.user_id = User_Bookmark.Bookmarked_user_id
 WHERE Account.user_id=6 AND User_Bookmark.user_id=1

但是这个查询 returns 零行...因为我不是 sql 方面的专家,我假设我遗漏了什么。谁能帮帮我?

User_Bookmark.user_id = 1 测试过滤掉不匹配的行,因为当没有匹配时该列将是 NULL。在执行 LEFT JOIN 时,您必须将第二个 table 的条件放入 ON 子句而不是 WHEN.

SELECT ACCOUNT.user_id, ACCOUNT.firstname, ACCOUNT.lastname, coalesce(User_Bookmark.user_id, 0) as isBookmarked
FROM Account 
LEFT OUTER JOIN User_Bookmark 
    ON Account.user_id = User_Bookmark.Bookmarked_user_id AND User_Bookmark.user_id=1
 WHERE Account.user_id=6