考虑以下表结构(不是我设计的,并且不可更改):
+---------------+-----------------------------+---------------------------+
| the_id | field_name | field_value |
+---------------+-----------------------------+---------------------------+
| 1 | county | lincolnshire |
| 1 | type | hotel |
| 2 | county | lincolnshire |
| 2 | type | castle |
+---------------+-----------------------------+---------------------------+
基本上,我想对此数据执行搜索,返回与我指定的参数匹配的所有内容的
the_id
。因此,例如,我想搜索具有(field_name =县AND field_value =林肯郡)AND(field_value =类型AND field_value =城堡)的所有the_id
字段。因此,将仅返回1。本质上,我想知道是否可以对返回的结果进行搜索。由于这些字段是由
the_id
链接的完全独立的实体,因此这是我在用伪代码进行的思考:查找
county
在结果中搜索
the_id
和type
返回子集。
问题是,我不确定100%如何在MySQL中实现。任何反馈都将不胜感激!
最佳答案
啊,使用SQL数据库作为键值存储的乐趣在于,因为它使DB模式变得更加简单...首先,请撤回该系统的原始设计者,并以烂鱼来打败他们,最好鲸大小,从高处掉落。
然后...
SELECT the_id, type, county
FROM (
SELECT type_name.the_id AS the_id, type.field_value AS type, county.field_value AS county
FROM yourtable AS type
LEFT JOIN yourtable AS county ON county.the_id = type.the_id AND county.field_name='county'
WHERE type.field_type = 'type'
) AS child
WHERE county='lincolnshire'
关于php - 在MySQL中搜索返回的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7758054/