【问题标题】:distinct not working in sql query不同的在sql查询中不起作用
【发布时间】:2013-08-12 16:56:07
【问题描述】:

我的数据库中有两个表。一个是 Messages,另一个是 Contacts...两个表都包含 mobile_number 字段。在 Contacts 表中有没有重复的号码......但在消息表中,mobileNo 字段中有几个重复的号码......我现在正在做的是写我从 Messages 表中选择不同的手机号码,然后我比较联系人表中的不同数字......所以如果在联系人表上找到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

【问题讨论】:

    标签: php mysql sql cakephp distinct


    【解决方案1】:

    如果我是对的,那么您是否尝试获取某人的最后 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
    

    【讨论】:

      【解决方案2】:

      在您的 ORDER BY 之前添加一个 GROUP BY Message.mobileNo

      【讨论】:

        【解决方案3】:

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

        MySQL DISTINCT Optimization

        【讨论】:

          猜你喜欢
          • 2013-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多