mysql - SQL Join 给出 30 个相同的结果

标签 mysql sql join

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

表消息: ID、发送者、接收者、消息、密码

表自己的消息: 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 次。有什么想法吗?

最佳答案

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

关于mysql - SQL Join 给出 30 个相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28925561/

相关文章:

php - 使用 foreach 为每组记录指定时间戳

php - mysql 特定的 select with order

sql - 有没有一种快速方法来检查任何列是否为 NULL?

sql - 将记录与第二个表中的最新记录连接起来

mysql - 如何在 SQL 中使用 Multiple Join 显示值

php - 将评论限制为 250 个字符

mysql - 为什么两个不同的 mysql 函数在对从单个 mysql_query() 检索的数据执行时返回不同的行?

php - 具有自定义索引 PHP 的 Foreach

sql - PostgreSQL:如何根据 WHERE 子句选择不同的关系并按不同字段排序?

mysql - 确定列值在 MySQL 中是否为空/非空