我有一个如下的Mysql表。
我想在表上运行查询,以获得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`
但上述查询会导致所有用户,而我想过滤掉field_1 ='Summer'的user_2。
我可以在上面的结果集中运行PHP for循环,但我想知道是否有更有效的方法来使用MySql查询,而不使用PHP for循环。
我有大约10个不同的field_id值和数千行数据,因此效率是一个主要问题。
答案 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