2013-09-20 45 views
0

我必须使用mysql表格并尝试显示table1的结果,但是按table2排序。对于table2,我计算所有重复id的出现次数,然后显示结果降序。下面是我可以得到的,并想知道这是否甚至可以完成是一个单一的查询。按不同表格中的数据排序mysql表格

$query = " 
SELECT DISTINCT registration.* 

FROM    registration 

INNER JOIN  downloads 
ON    registration.id = downloads.id 

GROUP BY   downloads.COUNT(id) 
ORDER BY   downloads.COUNT(id) DESC, 
        downloads.COUNT(id) DESC 

“;

+0

你的查询充满了问题,很难准确地告诉你想要完成什么,也许一些示例数据和你想要的结果会帮助你p来说明你的要求? – eggyal

+0

表1有身份证号码,姓名,电子邮件。表2有身份证号码,下载文件。试图通过最大数量的下载显示身份证号码,姓名,电子邮件,下载文件和订单。 –

+0

大家知道,MySQL'特性'允许你将'SELECT'列不属于GROUP BY或集合函数的一部分(例如'COUNT()'),这本质上是危险的 - 你无法控制你的值进入额外的列。这意味着,只要数据库决定以不同的方式优化您的查询,您就可以得到不同的结果... –

回答

0

认为你想沿着这些路线的东西:

SELECT Registration.id, Registration.name, Registration.email, 
     Downloads.document 
FROM Registration 
JOIN Downloads 
    ON Downloads.id = Registration.id 
JOIN (SELECT id, COUNT(*) as count 
     FROM Downloads 
     GROUP BY id) Download_Count 
    ON Download_Count.id = Registration.id 
ORDER BY Download_Count.count DESC 

(未经测试,因为这将是很好的OP提供的样本数据和表格布局这个问题)

相关问题