SQL中使用Group By和Order By的字母顺序

时间:2014-08-19 07:15:32

标签: mysql sql

我的SQL出了问题。我的发言如下:

SELECT       p.id,p.nombre 
FROM         provincia p 
INNER JOIN   informacion_tiendas it ON p.id=it.idprovincia 
GROUP BY     p.id 
ORDER BY     COUNT(p.id) DESC,p.nombre ASC

我需要下一个订单:首先是具有更多数据和按名称排序的元素,但是这个SQL给了我下一个订单(我订购了一些带商店的国家):

马拉加 - 马德里(这两个还可以) - 阿维拉 - 拉科鲁尼亚 - 阿尔梅利亚(这三个都错了)

当订单必须

马拉加 - 马德里 - 拉科鲁尼亚 - 阿尔梅利亚 - 阿维拉

我的SQL语句中的错误在哪里?

2 个答案:

答案 0 :(得分:0)

在p.nombre之后,您是否忘记按SQL中的名称排序?

修改:

试试这个:

SELECT       count(p.id),p.nombre 
FROM         provincia p 
INNER JOIN   informacion_tiendas it ON p.id=it.idprovincia 
GROUP BY     p.nombre 
ORDER BY     COUNT(p.id) DESC,p.nombre ASC

答案 1 :(得分:0)

我认为你现在真的有两个选择..最好的办法是"修复"您的数据库并修复所有条目。 SQL不仅能够处理这样的字符,而且不需要转义子句。

或者,您可以使用hacky ORDER BY子句,它将取决于您以这种方式使用了多少个不同的字母:

ORDER BY REPLACE(REPLACE(LCASE(p.nombre),'&iacute','i'),'&aacute','a') ASC