【问题标题】:How to join table on ‘from’ alias? [closed]如何在“来自”别名上加入表? [关闭]
【发布时间】:2021-02-28 16:40:46
【问题描述】:

我怎么能做这样的事情?

select * from  (generating table) alias_table
left join (select * from alias_table where id>5) alias_table_2
on alias_table.id=alias_table_2.id

【问题讨论】:

  • 使用 CTE(一般)。
  • @Akina 谢谢,不知道
  • 为什么你认为你可以做到这一点?表别名不命名表值,它命名代表行。 PS 这(正如人们所料)是一个常见问题解答。 PS 关于语法错误,请阅读手册重新语法及其语义。 PS 对于代码问题,请提供minimal reproducible example。 PS 要使用左表别名作为定义右表的代表行(即使用点,即在列引用中),您可能需要使用 DBMS 可能不支持的 LATERAL。 PS 提供无意义的代码并不能传达您希望的意思。提供不返回您想要的代码的代码不会传达您想要的内容。 How to Ask

标签: mysql sql join alias


【解决方案1】:

如果您的 MySQL 版本不超过 8,那么您可以使用如下公用表表达式:

WITH alias_table (column_list from generated table) AS (
    generating table
) 

select * from  alias_table
left join (select * from alias_table where id>5) alias_table_2
on alias_table.id=alias_table_2.id

在下面的链接中,您将找到一个工作示例: https://www.db-fiddle.com/#&togetherjs=2GJBwJNocB

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2021-10-25
    • 2012-07-21
    • 2016-09-25
    • 1970-01-01
    • 2014-11-11
    • 2014-02-06
    相关资源
    最近更新 更多