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