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' (inactive status=0) 显示的非激活类别,任何机构都可以帮助我解决这个问题

4

2 回答 2

0

您需要在您的“cat_id”或条件周围加上括号 ()。'status'='1'AND 仅适用于其他“cat_id ” ,'cat_id'=2'但不适用于其他“cat_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"
于 2012-06-29T19:40:23.127 回答
0

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

此外,不要使用所有这些ORs 或||s,而是使用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 回答