MySQL - 从一个表返回数据,该表匹配另一个表中的多个数据组合

时间:2012-07-12 12:50:46

标签: mysql sql

我有一个名为meta_data的表,其结构如下

id, fk_id, label, data

其中fk_id链接到另一个表 - books

meta_data表包含以下条目:

|id|fk_id|label|data   |
|--|-----|-----|-------|
|1 |1    |pages|10     |
|2 |2    |pages|10     |
|3 |1    |pub  |smith  |
|4 |3    |pub  |smith  |

我想在books上进行选择,其中meta_data中的条目与许多参数匹配,例如pages = 10pub = smith

因此,使用上面的示例,我将在books表中返回id为1的条目(2和3将不包括在内,因为它们匹配其中一个条件,它们不匹配)。

此查询还需要是动态的,因此我可以查询meta_data表格中的一个或多个标签/数据组合,例如我在上面的示例中查询了两个组合,但可能想要查询4或5.

meta_data表中可能有多个条目具有相同的标签但数据值不同。例如可能还有另一行:

|5 |1    |pub  |jones  |

有人能举例说明这个查询应该如何使用MySQL吗?

1 个答案:

答案 0 :(得分:1)

这是您在问题中指定的条件的示例。如果您希望条件更加动态,则应在应用程序中动态构建查询。

Select b.book_name from books b, meta_data m, meta_data md
WHERE b.id = m.fk_id and b.id = md.fk_id 
and m.label ='pages' and m.data = 10 
and md.label ='pub' and md.data='smith'