mysql 选择别名不起作用

问题描述 投票:0回答:5

我的 select 语句遇到问题,运行时 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 的外键,我想要实现的是拥有它,以便当用户单击链接时,它会显示该书与其他书籍的所有关系

mysql select
5个回答
0
投票

使用别名时使用引号

 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;

0
投票

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

  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

0
投票

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

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


0
投票

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

useOldAliasMetadataBehavior=true

在 JDBC 连接字符串中。

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


-1
投票

正确的格式是:

ColName
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;
© www.soinside.com 2019 - 2024. All rights reserved.