如果你想要得到的只是有相同orderid
但不同userid
,使用該行:
SELECT P1.* FROM points P1
INNER JOIN points P2
ON P1.orderid = P2.orderid and P1.id != P2.id and P1.userid != p2.userid;
注意,這個第一選擇回報你在你的問題中期待什麼:
現在
+----+--------+---------+
| id | userid | orderid |
+----+--------+---------+
| 4 | 12 | 152 |
| 5 | 11 | 152 |
+----+--------+---------+
,如果你想要任何回報orderid
是一樣的,不管userid
,使用此:
SELECT P1.* FROM points P1
INNER JOIN points P2
ON P1.orderid = P2.orderid and P1.id != P2.id;
在這種情況下,它不會排除與相同的結果id,返回
+----+--------+---------+
| id | userid | orderid |
+----+--------+---------+
| 1 | 10 | 150 |
| 2 | 10 | 150 |
| 4 | 12 | 152 |
| 5 | 11 | 152 |
+----+--------+---------+
剛剛測試過它,它按預期工作。感謝您的時間! – skobaljic
@skobaljic偉大的工程。 SQL可以做很多事情;) – lad2025
我知道它可以做到,但我不能:)不幸的是,對於web開發人員來說,這是一種厄運,一個人都知道,什麼都不知道。 – skobaljic