Php 如何根据同一表中的多个列值进行数据匹配

Php 如何根据同一表中的多个列值进行数据匹配,php,mysql,sql,Php,Mysql,Sql,我怎样才能获得那些属于79个国家、作者80和出版商91的图书的ID SELECT id FROM books WHERE ( (filter = 'country' AND cat = 79) AND (filter = 'author' AND cat = 80) AND (filter = 'publisher' AND cat = 91) ) 这是我的桌子结构 +----+----------+-----+ | I

我怎样才能获得那些属于79个国家、作者80和出版商91的图书的ID

SELECT id FROM books WHERE ( 
    (filter = 'country' AND cat = 79) 
        AND
    (filter = 'author' AND cat = 80)
        AND
    (filter = 'publisher' AND cat = 91)
    )   
这是我的桌子结构

+----+----------+-----+
| ID | FITER    | CAT |
+----+----------+-----+
|  1 | country  | 79  |
|  1 | author   | 80  |
|  1 | publisher| 91  |
|  2 | country  | 476 |
|  2 | author   | 85  |
|  2 | publisher| 121 |
+----+----------+-----+         

谢谢你

这就是这种表结构的问题,你真的有那么多的过滤器不能单独成为列吗?。不管怎么说,情况是这样的:

SELECT DISTINCT id 
FROM books b
WHERE filter = 'country' AND cat = 79
AND EXISTS( SELECT 1 FROM books 
            WHERE filter = 'author' AND cat = 80
            AND id = b.id)
AND EXISTS( SELECT 1 FROM books 
            WHERE filter = 'publisher' AND cat = 91
            AND id = b.id);

你想从这个表中得到前3条记录吗?或者您想从其他表中获取信息?@dotnetom:我只想获取id 1,您可以解释一下SELECT 1 from…?@Mic
存在
检查它是否返回一行,无论
SELECT
中有什么,因此,我选择
select1
,明确表示我不需要来自内部表的任何列,只是为了检查existenceWorked是否存在。谢谢:)