【问题标题】:SQL Join gives 30 same resultsSQL Join 给出 30 个相同的结果
【发布时间】:2015-03-08 10:49:38
【问题描述】:

我正在使用连接从两个表中获取消息

表格消息: ID、发件人、收件人、消息、密码

Table OwnMessages: ID、发件人、收件人、消息、密码

查询:

SELECT DISTINCT(Messages.ID) as F_id, 
               Messages.Message as F_message, 
               Messages.Password as F_password, 
               Messages.Receiver as F_receiver, 
               OwnMessages.ID as O_id, 
               OwnMessages.Message as O_message, 
               OwnMessages.Password as O_password, 
               OwnMessages.Sender as O_sender
FROM Messages
JOIN OwnMessages on Messages.Receiver = OwnMessages.Sender
WHERE Messages.Receiver = 8 AND OwnMessages.Sender = 8

Messages 表中的所有内容都正确显示,但从 OwnMessages 表中我得到了第一行 30 次。有什么想法吗?

【问题讨论】:

  • distinctNOT 一个函数。它适用于select 列表的所有 列。
  • 我也试过没有不同的,得到了​​完全相同的结果
  • 也许 OwnMessages 中有不同值的列(此处未选择)?
  • 如果您添加一些示例表数据和当前结果和想要的结果,帮助您会容易得多!
  • 我建议您删除此问题并提出另一个问题。从样本数据和您想要达到的结果开始。您的查询工作并且完全按照它的设计目的进行。你只是没有表达你真正想要做什么。无效的查询通常不会传达该信息。

标签: mysql sql join


【解决方案1】:
SELECT DISTINCT 
               Messages.ID as F_id, 
               Messages.Message as F_message, 
               Messages.Password as F_password, 
               Messages.Receiver as F_receiver, 
               OwnMessages.ID as O_id, 
               OwnMessages.Message as O_message, 
               OwnMessages.Password as O_password, 
               OwnMessages.Sender as O_sender
FROM Messages
INNER JOIN OwnMessages on Messages.Receiver = OwnMessages.Sender
WHERE Messages.Receiver = 8 AND OwnMessages.Sender = 8

SELECT             Messages.ID as F_id, 
                   Messages.Message as F_message, 
                   Messages.Password as F_password, 
                   Messages.Receiver as F_receiver, 
                   OwnMessages.ID as O_id, 
                   OwnMessages.Message as O_message, 
                   OwnMessages.Password as O_password, 
                   OwnMessages.Sender as O_sender
    FROM Messages
    INNER JOIN OwnMessages on Messages.Receiver = OwnMessages.Sender
    WHERE Messages.Receiver = 8 AND OwnMessages.Sender = 8
    GROUP BY Messages.ID
    HAVING COUNT(*) = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-20
    • 2014-06-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2014-11-15
    相关资源
    最近更新 更多