mysql - 每个派生表必须有自己的别名

标签 mysql join random derived

我有以下查询:

SELECT `snap`.`ID`, `user`.`username`, `vote`.`type` 
FROM (`snap`) JOIN `user` as u ON `u`.`ID` = `snap`.`user` 
LEFT JOIN (select * from vote where user = "18") as vote ON `snap`.`ID` = `vote`.`snap` 
JOIN (SELECT CEIL(MAX(ID)*RAND()) AS ID FROM snap)) AS x ON `snap`.`ID` => `x`.`ID` 
WHERE `snap`.`active` = 0 LIMIT 1

它工作得很好,直到我添加了最后一个 JOIN。现在我收到错误:“每个派生表必须有自己的别名”。我知道这是因为每个表都需要它的别名,并且我需要将“as S”或其他内容放在某处,但我不知道如何在此查询中执行此操作。

最佳答案

好像你在snap之后有额外的右括号。它应该是 1 而不是 2 个右括号。

SELECT `snap`.`ID`, `user`.`username`, `vote`.`type` 
FROM (`snap`) JOIN `user` as u ON `u`.`ID` = `snap`.`user` 
LEFT JOIN (select * from vote where user = "18") as vote ON `snap`.`ID` = `vote`.`snap` 
JOIN (SELECT CEIL(MAX(ID)*RAND()) AS ID FROM snap) AS x ON `snap`.`ID` = `x`.`ID` 
WHERE `snap`.`active` = 0 LIMIT 1

关于mysql - 每个派生表必须有自己的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8524703/

相关文章:

mysql - 如何建模一个页面可以有不同内容类型的数据库?

php - SQL - 根据条件连接选定的数据或表

MySQL JOIN 在与 LEFT JOIN、WHERE 和 OR 组合时返回不相关的行

mysql - RAND() 查询和性能

javascript - javascript中相同的随机排序

javascript - 数组项的加权随机样本*无替换*

php - 通过 "SELECT"命令选择每组的前两条记录的最佳方法是什么?

mysql - 尝试从 Symfony2 中的数据库获取列总和时出错

mysql - sql 通过从具有多行的表中选择查询插入到表中

MySql - 指定连接后要使用的表列