2013-11-25 69 views
1

我有我运行一个SQL查询是:MySQL的排序邮政编码,然后在每个邮政编码随机

SELECT * FROM listings, listings_categories 
    WHERE listings.id = listings_categories.listing_id AND category_id 
    IN (1,3,5,8,7,4,5,2) 
    AND business_zip IN (89101,89102,89103,89104,89105,89106) 
    AND status = '1' GROUP BY listings.id 

会不会有对结果进行排序的方式,使其由business_zip ASC排序但随机在每个邮政编码内的结果,或者我最好在PHP中处理这个。

回答

3

你可以有多个种类..

SELECT * FROM listings, listings_categories 
WHERE listings.id = listings_categories.listing_id AND category_id 
IN (1,3,5,8,7,4,5,2) 
AND business_zip IN (89101,89102,89103,89104,89105,89106) 
AND status = '1' GROUP BY listings.id 
ORDER BY business_zip, RAND() 
+0

哦,不错...我认为,如果你以后,它抵消了其他参数的另一个排序参数使用RAND()。我会放弃这一点。 –

+0

我不这么认为,它的行为应该完全相同,就好像在表格中有一个名为“rand”的列一样,该列中预先填充了0和<1之间的随机值。为了获得额外的乐趣,您可以在数据库中添加一个“权重”列,并将其乘以兰德以将结果加权到特定的行。 'ORDER BY business_zip,RAND()* weight' –