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

表消息:ID,发件人,收件人,消息,密码

表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


表消息中的所有内容都能正确显示,但是表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

10-04 15:16
查看更多