Php 使用MySQL查询仅显示有限的类别

Php 使用MySQL查询仅显示有限的类别,php,mysql,categories,Php,Mysql,Categories,我有一个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

我有一个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)不显示的非活动类别
任何人都能帮我解决这个问题吗?

你需要在你的“cat_id”或条件周围加上括号()。
'status'='1'
仅适用于
'cat\u id'=2'
,而不适用于另一个'cat\u id',因为条件是从左到右读取的

"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"

您必须将
WHERE
关键字放在您的条件之前

另外,在中使用
,而不是所有的
|
s

SELECT *
FROM album
WHERE status = 1 AND cat_id IN (2,7,8,14,20)
ORDER BY cat_name DESC
LIMIT 10

谢谢你的解决方案,让它工作起来。您的和holger解决方案:)