【问题标题】:SQL join table on a modified key修改键上的 SQL 连接表
【发布时间】:2021-08-27 22:40:21
【问题描述】:

我正在尝试在修改后的键上加入表。我得到 b.buser 不存在。

SELECT 
a.name,
a.work_id,
a.email_id,
a.Legal_name,
b.username,
left(b.username,11) as buser,
b.email,
FROM a
left join b on a.work_id=b.buser

【问题讨论】:

  • 解析器告诉您在表b 中没有列buser。你的表是什么结构,什么是修改键?

标签: sql amazon-redshift dbvisualizer


【解决方案1】:

我只能相信解析器:b.buser doesn't exist.

查看您的 SQL,您可能正在尝试引用 left(b.username,11),您将其别名为 buser。这与b.buser 不同。

试试这个:

left join b on a.work_id=left(b.username,11)

【讨论】:

  • 这行得通。奇怪的是,我无法从 Select 中获得参考。谢谢!
  • 如果您引用了buser 而不是b.buser,它可能会起作用。我不记得什么时候可以重用这样的别名,什么时候不能,这可能取决于 RDBMS 版本。但是 b.buser 绝对不存在。
【解决方案2】:

我认为您没有理由在 select 中需要 left(b.username, 11)。为什么会在那里?如果不是NULL,则与a.work_id相同:

SELECT a.name, a.work_id, a.email_id, a.Legal_name,
       b.username, b.email,
FROM a LEFT JOIN
     b
     ON a.work_id = LEFT(b.buser, 11)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多