考虑以下表结构(不是我设计的,并且不可更改):

+---------------+-----------------------------+---------------------------+
|    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_idtype
返回子集。


问题是,我不确定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/

10-16 22:09