我有一个名为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 = 10
和pub = smith
。
因此,使用上面的示例,我将在books
表中返回id为1的条目(2和3将不包括在内,因为它们匹配其中一个条件,它们不匹配)。
此查询还需要是动态的,因此我可以查询meta_data
表格中的一个或多个标签/数据组合,例如我在上面的示例中查询了两个组合,但可能想要查询4或5.
meta_data
表中可能有多个条目具有相同的标签但数据值不同。例如可能还有另一行:
|5 |1 |pub |jones |
有人能举例说明这个查询应该如何使用MySQL吗?
答案 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'