在sql查询中不起作用

时间:2013-08-12 16:56:08

标签: php mysql sql cakephp distinct

我的数据库中有两个表..一个是消息,另一个是联系人 ...两个表都包含mobile_number字段..在Contacts表中有没有重复的数字......但在Messages表中,mobileNo字段中有几个重复的数字...我现在正在写的是我从消息表中选择不同的手机号码然后我就是比较联系人表格中的不同号码...所以如果在联系人表格上找到messages_mobileNo,那么请给我一个联系人姓名,否则就是messages_mobileNo ...所以问题明显不起作用..我无法得到来自Messages表的不同数字......它显示了重复的数字

这是我的查询

 SELECT DISTINCT Message.mobileNo,
            Contact.mobileNo,
            Contact.workNo,
            Contact.homeNo,
            Contact.other,
            Contact.name,

            Message.body,
            Message.idTextMessage
FROM cakephp_db.textmessage AS Message
LEFT JOIN cakephp_db.contacts AS Contact ON (Message.user_id = Contact.user_id
                                         AND ((Message.mobileNo = Contact.mobileNo)
                                              OR (Message.mobileNo = Contact.workNo)
                                              OR (Message.mobileNo = Contact.homeNo)
                                              OR (Message.mobileNo = Contact.other)))
 WHERE Message.User_id = 23
 ORDER BY Message.idTextMessage DESC LIMIT 6

3 个答案:

答案 0 :(得分:0)

所以,如果我是对的,你试图获取一个人的最后6条消息吗?

 SELECT Message.mobileNo,
            Contact.mobileNo,
            Contact.workNo,
            Contact.homeNo,
            Contact.other,
            Contact.name,

            Message.body,
            Message.idTextMessage
FROM cakephp_db.textmessage AS Message
LEFT JOIN cakephp_db.contacts AS Contact ON Message.user_id = Contact.user_id
                                         AND Message.mobileNo IN (Contact.mobileNo, Contact.workNo, Contact.homeNo, Contact.other)
 WHERE Message.User_id = 23
GROUP BY Message.mobileNo
 ORDER BY Message.idTextMessage DESC LIMIT 6

答案 1 :(得分:0)

GROUP BY Message.mobileNo

之前添加ORDER BY

答案 2 :(得分:0)

如果您使用MySQL SELECT DISTINCT并添加了ORDER BY,则必须创建一个临时表,以便存储其结果。这是一个提供更多帮助的链接:

MySQL DISTINCT Optimization