【问题标题】:SQL Select table1.columa as table1.columbSQL 选择 table1.column 作为表 1.column
【发布时间】:2010-04-08 19:52:15
【问题描述】:

我正在处理数据库连接,我想做以下事情:

Select tabel_one.id, 
       tabel_one.title, 
       tabel_one.content, 
       table_two.value as table_two.key 
  from tabel_one 
  Join table_two ON table_two.id = table_one.id ....

重要的部分是:

table_two.value as table_two.key

有什么办法可以做到吗?

【问题讨论】:

  • 是的,但不是你写它的方式。它应该做什么?
  • 发布一些数据和预期的输出真的很有帮助......

标签: sql mysql select join


【解决方案1】:

不,您不能定义引用表的别名。

一般来说,你应该简单地使用:

table_two.value as key

否则,作为OMG Ponies suggested in another answer,您可以将别名包含在反引号中:

table_two.value as `table_two.key`

【讨论】:

  • 好吧,那行不通。具体来说:我有一个包含帖子的表格和一个包含此帖子数据的表格。数据表是连接的。这个的结构是: 'id ; post_id ;类型 ; value´ 但类型可能是您永远不知道的“标签”或“作者”。所以我想加入'post_data.value as post_data.type'。 post_data.type 当然不能写,而是'tags'或'author'。我是否理解正确,这是不可能的?
  • 不,我还是不明白这个问题。
  • @Lukas 列名对于结果集中的所有行都是固定的。您可以使用适当的逻辑设置一组带有标签和一组单独的作者,甚至一组带有标签和作者(只有一个非 NULL)。
【解决方案2】:

这个:

Select tabel_one.id, 
       tabel_one.title, 
       tabel_one.content, 
       table_two.value as `table_two.key` 
  from tabel_one 
  Join table_two ON table_two.id = table_one.id

...在 MySQL 5.1.35 上为我工作。由于句号的原因,您需要用反引号将别名括起来

【讨论】:

    【解决方案3】:

    从你的comment on this answer来看,我猜你真正想要的是:

    Select tabel_one.id,  
           tabel_one.title,  
           tabel_one.content,  
           table_two.value as tags,
           table_three.value as author
      from table_one  
      LEFT Join table_two ON table_two.id = table_one.id 
      AND table_two.key= 'tags'
      LEFT Join table_three ON table_three.id = table_one.id 
      AND table_three.key= 'author'
    

    【讨论】:

    • 嗯,不完全是,因为首先,作者和标签在同一个表中,其次,你永远不知道哪个在表中。不过,我将使用不同的方法。无论如何,谢谢。
    猜你喜欢
    • 2019-03-23
    • 2014-03-13
    • 2021-12-30
    • 1970-01-01
    • 2023-01-25
    • 2012-07-29
    • 2021-03-13
    • 2022-08-03
    • 1970-01-01
    相关资源
    最近更新 更多