SQL Server:相同的列但不同的值
我有两个表:SQL Server:相同的列但不同的值,sql,sql-server,Sql,Sql Server,我有两个表:用户和消息 我试着写一个合适的精选句子,现在看起来确实是这样的: SELECT Messages.Message_id, Messages.From_id, Users.Username, Messages.To_id, Users.Username, Messages.Date, Messages.Subject, Messages.Text, Messages.Picture FROM Messages INNER JOIN Users
用户
和消息
我试着写一个合适的精选句子,现在看起来确实是这样的:
SELECT
Messages.Message_id,
Messages.From_id,
Users.Username,
Messages.To_id,
Users.Username,
Messages.Date,
Messages.Subject,
Messages.Text,
Messages.Picture
FROM
Messages
INNER JOIN
Users
ON Messages.From_id = Users.User_id
AND Messages.To_id = Users.User_id
我担心重复两次的用户。用户名
,我不确定这是否会显示正确的结果
请帮我创建一个合适的select语句。它不是不同的值。没有定义连接,因此它将下降到一个连接条件,输出两次值。完成。如果有什么区别的话,代码评审会将其标记为明显错误-您可能希望向用户显示from和to,在这种情况下,您需要:
- Join两次(即两个内部Join语句)
- 两个联接都有其他名称别名(即作为用户\u到和作为用户\u从和
- 显然,从两个别名而不是表名中获取名称
SELECT
Messages.Message_id,
Messages.From_id,
FromUser.Username,
Messages.To_id,
ToUser.Username,
Messages.Date,
Messages.Subject,
Messages.Text,
Messages.Picture
FROM
Messages
INNER JOIN
Users FromUser on Messages.From_id = FromUser.User_Id
INNER JOIN
Users ToUser on Messages.To_id = ToUser.User_Id
这是正确的吗?:``选择Messages.Message\u id,Messages.From\u id,UsersFrom.Username,Messages.To\u id,UsersTo.Username,Messages.Date,Messages.Subject,Messages.Text,Messages.Picture From Messages内部将用户作为用户从消息中加入。From\u id=UsersFrom.User\u id内部将用户作为用户从消息中加入。To\u id=UsersTo.User\u id``Un幸运的是,我现在无法测试它,我只需要知道我的想法是否正确。准确地说。我通常从不使用隐式连接-其中有太多的危险-并且总是定义连接条件。