如何使用mysql查询按字母顺序排序

时间:2012-10-03 08:42:28

标签: mysql

我的相册按ID排序,现在我只想显示专辑B字母。

我的旧查询

$valueql_select="SELECT DISTINCT (i.gallery_album_id) FROM mov_gallery_album AS a, mov_gallery_images AS i WHERE a.gallery_album_id = i.gallery_album_id AND a.gallery_cat_id =".$_GET['cat']." ORDER BY gallery_id desc";

我尝试使用LIKE

$valueql_select="SELECT DISTINCT (i.gallery_album_id) FROM mov_gallery_album AS a, mov_gallery_images AS i WHERE a.gallery_album_id = i.gallery_album_id AND a.gallery_cat_id =".$_GET['cat']." ORDER BY name LIKE 'b%'";

但上述查询不起作用。

2 个答案:

答案 0 :(得分:1)

将条件放在WHERE子句中:

$valueql_select="SELECT DISTINCT i.gallery_album_id
                 FROM mov_gallery_album AS a
                 JOIN mov_gallery_images AS i
                 ON a.gallery_album_id = i.gallery_album_id
                 WHERE a.gallery_cat_id = '42'
                 AND name LIKE 'b%'
                 ORDER BY name";

此外,您还有SQL注入漏洞。 将值连接到SQL字符串中。特别是当它们直接来自用户输入而没有任何验证时。

相关

答案 1 :(得分:0)

如果您需要对以B开头的名称进行排序,请首先尝试:

ORDER BY
CASE WHEN name name LIKE 'b%' THEN 0 ELSE 1 END, name ;

如果您希望获得以B开头的名称,则必须将LIKE谓词移动到WHERE子句,如下所示:

WHERE a.gallery_album_id = i.gallery_album_id 
 AND a.gallery_cat_id =".$_GET['cat']."
 AND name LIKE 'b%'
 ORDER BY name