作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 user_info
的表,它具有唯一 id
和一般信息,例如 title
、名字
、姓氏
、号码
等..
我有另一个表useralias
,它有两列; 用户ID
和别名
。
目前,我从 user_info select * where timestamp > 'a timestamp'
。
如何根据 userid
将别名表中每个 useralias
记录的每个 user_info
记录的副本附加到结果中,考虑时间戳
。
除了我想将 userid
替换为这些额外记录的别名 id,但返回其余详细信息,就好像存在该 user_info
的精确副本一样记录,除非使用不同的 id。
最佳答案
如果您只想要别名而不是原始用户 ID,那么简单的连接即可满足您的需求:
select ua.aliasid, <all columns from user that you want>
from user u join
useralias ua
on u.userid = ua.userid
如果您同时需要用户 ID 和别名,那么您需要扩充要加入的表:
select ua.aliasid, <all columns from user that you want>
from user u join
(select userid, aliasid
from ((select userid, aliasid
from useralias ua
)
union all
(select userid, userid as aliasid
from user
)
) t
) ua
on u.userid = ua.userid
此查询创建用户 ID 和别名 ID 对的列表,并添加所有现有用户 ID。当您加入时,您将获得原始记录。您还可以使用通过联接连接的两个单独的查询来执行此操作。
关于mysql - 如何根据另一个表中指定的关系从一个表中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10861449/
我是一名优秀的程序员,十分优秀!