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 に答える