0

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条目,例如AND 。 meta_datapages = 10pub = smith

因此,使用上面的示例,我将在表中返回booksid 为 1 的条目(2 和 3 将不包括在内,因为它们匹配标准之一,但它们不匹配两者)。

此查询也需要是动态的,因此我可以查询meta_data表中的 1 个或多个标签/数据组合,例如,我在上面的示例中查询 2 个组合,但可能想要查询 4 ​​或 5。

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

|5 |1    |pub  |jones  |

谁能给我一个例子,说明这个查询应该如何使用 MySQL?

4

1 回答 1

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' 
于 2012-07-12T12:57:24.487 回答