2014-10-17 64 views
0

我有以下查询工作MySQL的CROSS JOIN从句法

SELECT newTable.Score, COUNT(1) AS Total, COUNT(1)/t.count * 100 AS `Frequency` 
FROM mytable newTable 
CROSS JOIN (SELECT COUNT(1) AS count FROM mytable) t 
GROUP BY newTable.Score 
ORDER BY Frequency DESC 

然而,两件事情我不从MySQL文档理解:

1)我不明白为什么有ISN”在from子句中指定逗号或连接类型。

阅读MySQL文档,这似乎是必要的。

2)'t'在CROSS JOIN子句中代表什么?

任何意见赞赏。

回答

0

tnewTable相同 - 它是表和子查询构建的临时表的别名。

更容易当可选as关键字用于

SELECT newTable.Score, COUNT(1) AS Total, COUNT(1)/t.count * 100 AS `Frequency` 
FROM mytable as newTable 
CROSS JOIN (SELECT COUNT(1) AS count FROM mytable) as t 
GROUP BY newTable.Score 
ORDER BY Frequency DESC 

别名在查询中使用一个新的替换表的原始名称来读取。而且你需要给子查询一个名字来在你的查询中引用它们。

+0

这是完美的谢谢你;我开始怀疑有一种收缩/允许的替代语法。 确切地知道我现在在做什么 - 非常感谢您的帮助 – FLG360 2014-10-17 12:59:18