【问题标题】:mysql select alias not workingmysql选择别名不起作用
【发布时间】:2019-08-16 00:39:29
【问题描述】:

我的选择语句有问题,运行时 title_two 和 author_two 没有被下一个标题值正确填充。相反,它们打印出与 b.title 和 b.author 相同的内容。我尝试将它们声明为

 `B.title AS title_two`.   

  SELECT R.bookone, B.title, B.author,
     R.booktwo, B.title title_two, B.author author_two, 
    R.relation, R.relationlike, R.relationdislike 
    FROM relationships R 
    INNER JOIN books B ON R.bookone = B.bookid;

有两张桌子

具有以下内容的关系-relationshipid、bookone、booktwo、relation、relationlike、relationdislike

然后是bookid、书名、作者、出版商的书

bookone 和 booktwo 是引用 bookid 的外键,我想要实现的是拥有它,以便当用户点击链接时,它会显示该书与其他书的所有关系

【问题讨论】:

  • B.title AS title_two 会显示什么。 ?
  • -1 你的问题很混乱,从不同类型的答案可以看出。
  • 有两个表关系,它们具有以下关系-relationshipid、bookone、booktwo、relation、relationlike、relationdislike 然后是 bookid、title、author、publisher bookone 和 booktwo 的外键引用 bookid 是什么试图实现的是拥有它,以便当用户单击链接时,它会提出该书与其他书的所有关系,而不是两次提出 bookone 的标题

标签: mysql select


【解决方案1】:

使用别名时使用引号

 SELECT R.bookone, B.title, B.author,
     R.booktwo, B.title as 'title_two', B.author as 'author_two', 
    R.relation, R.relationlike, R.relationdislike 
    FROM relationships R 
    INNER JOIN books B ON R.bookone = B.bookid;

【讨论】:

    【解决方案2】:

    您需要再加入一次书籍。比如:

      SELECT R.bookone, B1.title, B1.author,
        R.booktwo, B2.title title_two, B2.author author_two, 
        R.relation, R.relationlike, R.relationdislike 
        FROM relationships R 
        INNER JOIN books B1 ON R.bookone = B1.bookid
        INNER JOIN books B2 ON R.booktwo = B2.bookid
    

    【讨论】:

    • 进行更改时,您建议网站在“on Clause”中抛出此未知列“R.bookone”
    【解决方案3】:

    他们正在做他们应该做的事情。 author_two 应与 B.author 相同,title_two 应与 B.title 相同。它们只是别名。

    另外,从一个表中请求同一列两次不会得到表中的下一个结果——它只会返回同一列两次。

    【讨论】:

    • 有什么方法可以让我做我想做的事情吗?或者我应该把它作为两个选择语句然后组合它们
    • 在进行更改时,他建议网站在 'on 子句中抛出这个未知列 'R.bookone' 有什么想法吗?
    • 你原来问题中的sql现在已经完全改变了......?
    • 埃米尔的回答仍然是正确的。要么有错字,要么 bookone 列不存在。
    【解决方案4】:

    如果别名在您的查询中不起作用,请检查您是否包含了

    useOldAliasMetadataBehavior=true

    在 JDBC 连接字符串中。

    https://bugs.mysql.com/bug.php?id=33966

    【讨论】:

      【解决方案5】:

      正确的格式是:ColName as NewColName

      SELECT R.bookone as `BookOne`
        , ...
      FROM relationships R 
      INNER JOIN books B ON R.bookone = B.bookid;
      

      或者简单地说(没有AS)

      SELECT R.bookone `BookOne`
        , ...
      FROM relationships R 
      INNER JOIN books B ON R.bookone = B.bookid;
      

      【讨论】:

      • 这两个例子完全一样
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 2012-04-28
      • 2014-12-21
      相关资源
      最近更新 更多