从单个列结构中的数据存储的表中查询多个过滤器

时间:2018-05-03 11:56:13

标签: mysql

我有一个数据库,它在单列fieldValue和fieldID中存储具有以下结构的所有字段数据。 我想知道这种类型的结构如何在条件下有2个过滤器?

例如我如何查询所有等于High的fieldID2和所有不同的fieldID11。

数据库是mysql。

输出如下所示,输出将像数据透视表一样。请注意我写查询没有任何问题,我想知道如何为两列提供多个条件。

$this->container

https://docs.mongodb.com/manual/reference/operator/update/set/

1 个答案:

答案 0 :(得分:1)

我不确定你究竟在问什么。无论如何,通常通过聚合来查询键/值表。因此,如果每个InternalNo你想显示FieldIDs 1,2,3和4的值,只要它们的FieldID 2的值是' High'并且FieldID 11的值是' Discrepancy'你要这样做:

select
  internalno, 
  any_value(case when fieldid = 1 then fieldvalue end) as fieldvalue1,
  any_value(case when fieldid = 2 then fieldvalue end) as fieldvalue2,
  any_value(case when fieldid = 3 then fieldvalue end) as fieldvalue3,
  any_value(case when fieldid = 4 then fieldvalue end) as fieldvalue4
from keyvalues
group by internalno
having any_value(case when fieldid = 2 then fieldvalue end) = 'High'
   and any_value(case when fieldid = 11 then fieldvalue end) = 'Discrepancy';

为了加快速度,您可以在所需的FieldID上应用WHERE子句;

where fieldid in (1,2,3,4,11)

对于像FieldNo 89796的FieldID 10这样的一个属性的多个值,您必须决定要获取哪些值,而ANY_VALUE可能不足以满足要求。