用联系人姓名更改电话号码

时间:2016-10-02 09:16:46

标签: php android mysql

我有一个像

这样的联系人的表格
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

1 个答案:

答案 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)