今天看见一公司的数据库面试题,其中有道一开始没想起怎么做,后来摸索了下终于做出来了。

题目是:两个表联合查询,当表2的记录在表A里没有时,将其设置为0.

mysql> select * from t1;
+----+------+
| id | name |
+----+------+
|  1 | bbs  |
|  2 | bb   |
|  3 | cc   |
+----+------+
3 rows in set (0.01 sec)

mysql> select * from t2;
+----+------+
| id | name |
+----+------+
|  1 | aa   |
|  2 | bb   |
+----+------+
2 rows in set (0.00 sec)

mysql> select as name1, as name2 from t1 left join t2 on =;                                        
+-------+-------+
| name1 | name2 |
+-------+-------+
| bbs   | aa    |
| bb    | bb    |
| cc    | NULL  |
+-------+-------+
3 rows in set (0.00 sec)

将NULL变为0

 

第一种写法:

mysql> select as name1,if( is NULL,0,) as name2 from t1 left join t2 on =;                        
+-------+-------+
| name1 | name2 |
+-------+-------+
| bbs   | aa    |
| bb    | bb    |
| cc    | 0     |
+-------+-------+
3 rows in set (0.00 sec)

 

第二种写法:

mysql> select as name1,(case when is NULL then '0' else end) as name2 from t1 left join t2 on =;  
+-------+-------+
| name1 | name2 |
+-------+-------+
| bbs   | aa    |
| bb    | bb    |
| cc    | 0     |
+-------+-------+
3 rows in set (0.00 sec)

 

参考:

http:///share/detail/22393623