过滤的交叉表查询

时间:2017-07-20 13:44:19

标签: php mysql

我有一个如下的Mysql表。

enter image description here

我想在表上运行查询,以获得field_1 = Winter的用户的交叉表/数据透视格式的所有用户数据。

我知道如何在没有任何过滤器的情况下进行交叉表查询:

SELECT `user_id`, 
  GROUP_CONCAT(CASE WHEN `field_id` = 'field_2' THEN `field_value` ELSE NULL END) AS field_2,
  GROUP_CONCAT(CASE WHEN `field_id` = 'field_3' THEN `field_value` ELSE NULL END) AS field_3
FROM `my_table`  
GROUP BY `user_id`

enter image description here

但上述查询会导致所有用户,而我想过滤掉field_1 ='Summer'的user_2。

我可以在上面的结果集中运行PHP for循环,但我想知道是否有更有效的方法来使用MySql查询,而不使用PHP for循环。

我有大约10个不同的field_id值和数千行数据,因此效率是一个主要问题。

1 个答案:

答案 0 :(得分:1)

我认为您可以使用[TestMethod, Isolated] public void TestMethod1() { var fakeSomeClass = Isolate.Fake.Instance<SomeClass>(); var use = new UseOfSomeClass(fakeSomeClass); use.MyMethod(); Assert.IsTrue(use.IsChecked); } 子句断言您只想要那些至少有一行的user_id,其中包含Summer为字段1。

having