mysql选择别名不起作用

时间:2012-05-22 07:33:00

标签: mysql select

我的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,title,author,publisher

bookone和booktwo是引用bookid的外键,我试图实现它是如此,以便当用户点击链接时,它会提出该书与其他书籍的每个关系

5 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

正确的格式为:ColNameNewColName

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;

答案 2 :(得分: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

答案 3 :(得分:0)

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

此外,从单个表中请求两次相同的列将无法获得表中的下一个结果 - 它只返回相同的列两次。

答案 4 :(得分:0)

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

  

useOldAliasMetadataBehavior = true

在JDBC连接字符串中。

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