4
请考虑下表。它描述USER1多少次已开始与user2的对话(“A发起了与B,5倍”):将两行合并为一个
user1 user2 count
-------------------
A B 5
A C 2
B A 6
B C 1
C A 9
C B 4
不过,我想合并同类用户之间的行。因此,用户1:A和用户2:B是一样的用户1:B和用户2:A,导致以下结果:
user1 user2 count
-------------------
A B 11 (5 + 6)
A C 11 (2 + 9)
B C 5
我首先想到的是通过它来选择表到PHP,环路,加行并将结果重新插入到新表中。但是这看起来很冗长(而且很慢,因为表中包含数千条记录)。这也可能与(My)SQL有关吗?
@Pr0no你打算在做这一行压缩之前做一些缩小的查询吗?如果是这样,你会碰到一些障碍。例如,在上面的查询中,除非使用'HAVING'块,否则不会访问'LEAST(user1,user2)',但除非使用'WHEN'块,否则不会使用整个表。小心一点。 – 2012-04-25 19:50:02
+1列MIN()和MAX(),哦,我怎么会在SyBase中爱你! – MatBailie 2012-04-25 19:52:04
@RobertMartin - 你为什么建议你需要'HAVING'块来使用'最少()'? http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#function_least – MatBailie 2012-04-25 19:53:36