Php 如何根据同一表中的多个列值进行数据匹配
我怎样才能获得那些属于79个国家、作者80和出版商91的图书的IDPhp 如何根据同一表中的多个列值进行数据匹配,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
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是否存在。谢谢:)