如果行不存在则选择defalaut值如果secont表中不存在行,则从多个表中选择

时间:2014-08-25 13:07:15

标签: mysql

我有两张桌子

Permission
|id|userID|canView|canEdit|
|--+------+-------+-------|
|1 |  0   | true  | false |  (my default value)
|2 |  1   | true  | true  |

Users
|id|name |
|--+-----|
|1 |Smith|

如何从Permission中选择所有行,并从users表中添加name列,如下所示

    |id|userID|canView|canEdit|name |
    |--+------+-------+-------+-----|
    |1 |  0   | true  | false |NULL | 
    |2 |  1   | true  | true  |Smith|

我试试

SELECT p.* , u.name FROM `Permission` p ,`Users` u WHERE u.id = p.userID

但它唯一的回报

    |id|userID|canView|canEdit|name |
    |--+------+-------+-------+-----|
    |2 |  1   | true  | true  |Smith|

1 个答案:

答案 0 :(得分:2)

一种方法是使用LEFT JOIN,如果找不到匹配项,这将从右表中的列填充空值:

SELECT 
  p.* , 
  u.name 
FROM `Permission` p 
LEFT JOIN `Users` u 
ON p.userID = u.id