我有一个像
这样的联系人的表格Contacts
number (Primary key)
name (name of the contact)
Messages
id (primary key)
number (reciever or sender's phone number)
type (sent or recieved)
text (message body)
date (timestamp)
我想要的是,当我查询邮件并按电话号码对它们进行分组以进行对话时,我想更改“邮件”表中的电话号码以更改联系人表中的联系人姓名(如果存在) ,如果不存在,请将电话号码留作电话号码,因为有未知号码的人也可以发短信。 PS我已经google了很多寻找解决方案,但没有找到解决方案。
例如,
Contacts table contain
id name
1 a
2 b
Messages Contain
id number type text date
1 1 sent haha 123456
2 3 recieved hi 123459
现在结果应该是
number type text date
a sent haha 123456
3 received hi 123459
答案 0 :(得分:1)
您需要在LEFT JOIN
表和Messages
表之间使用Contacts
。
SELECT
COALESCE(c.name,m.id) AS number,
m.type,
m.text,
m.date
FROM messages m
LEFT JOIN contacts C ON m.number = C.id;
注意:强>
MySQL COALESCE() 函数返回列表的第一个非NULL值,如果没有非NULL值,则返回NULL。
mysql> SELECT COALESCE(NULL, 2, 3);
+----------------------+
| COALESCE(NULL, 2, 3) |
+----------------------+
| 2 |
+----------------------+
1 row in set (0.02 sec)
mysql> SELECT COALESCE(NULL, NULL, NULL);
+----------------------------+
| COALESCE(NULL, NULL, NULL) |
+----------------------------+
| NULL |
+----------------------------+
1 row in set (0.00 sec)