1

我的专辑按 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%'";

但是上面的查询不起作用。

4

2 回答 2

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 字符串中。特别是当它们直接来自用户输入而没有任何验证时。

有关的

于 2012-10-03T08:43:53.437 回答
0

如果您需要对以第一个开头的这些名称进行排序,请B尝试以下操作:

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

如果你想得到这些以B's 开头的名字,你必须将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
于 2012-10-03T08:44:11.430 回答