0

我的数据库中有两个表..一个是消息,另一个是联系人......两个表都包含 mobile_number 字段..在联系人表中没有重复的号码......但在消息表中,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
4

3 回答 3

0

GROUP BY Message.mobileNo在你的前面加一个ORDER BY

于 2013-08-12T17:03:37.807 回答
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
于 2013-08-12T17:01:33.437 回答
0

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

MySQL DISTINCT 优化

于 2013-08-12T17:09:02.430 回答