0

私は、フォトアルバムのカテゴリが約数百あるmysqlデータベースを持っています。を使用してアルバムを表示する場合

"SELECT * FROM 'album' `status`='1' ORDER BY `cat_name` DESC LIMIT 10"

したがって、最後の10個のカテゴリが表示されますが、その数百のカテゴリの間に15個のカテゴリのみを表示したい場合、クエリはどうあるべきですか?私はこれを試しました。

"SELECT * FROM 'album' `status`='1' and `cat_id`='2' || `cat_id`='7' || `cat_id`='8' || `cat_id`='14' || `cat_id`='20' ORDER BY `cat_name` DESC LIMIT 10"

statusここでは、表示したいカテゴリを表示していますが、 = '1'(非アクティブステータス= 0)を使用してここに表示していない非アクティブ化カテゴリも表示しています。

4

2 に答える 2

0

「cat_id」または条件を括弧 () で囲む必要があります。条件は左から右に読み取られるため、AND は他の 'cat_id'に'status'='1'のみ適用されますが、適用されません。'cat_id'=2'

"SELECT * FROM 'album' WHERE `status`='1' and (`cat_id`='2' || `cat_id`='7' || `cat_id`='8' || `cat_id`='14' || `cat_id`='20') ORDER BY `cat_name` DESC LIMIT 10"
于 2012-06-29T19:40:23.127 に答える
0

WHERE条件の前にキーワードを配置する必要があります。

また、これらすべてORの や||の代わりに、 を使用しますIN

SELECT *
FROM album
WHERE status = 1 AND cat_id IN (2,7,8,14,20)
ORDER BY cat_name DESC
LIMIT 10
于 2012-06-29T19:43:55.000 に答える