在下面的示例表中,具有相同O_Id
的所有记录也应具有相同的价格。显然,对于O_Id
的1和3,并非所有记录都具有相同的价格。
我在编写一个查询时遇到困难,该查询将返回与一个或多个其他记录具有相同O_Id
的表中的所有记录,但OrderPrice
与记录之间的匹配不匹配相同的O_id
。
样本表:
+------+------------+------------+
| Type | MySQL | OrderPrice |
+======+============+============+
| 1 | 2008/11/12 | 1000 |
| 1 | 2008/10/23 | 2000 |
| 2 | 2008/09/02 | 700 |
| 2 | 2008/09/03 | 700 |
| 3 | 2008/08/30 | 2000 |
| 3 | 2008/10/04 | 2100 |
| 3 | 2008/08/30 | 2000 |
| 3 | 2008/10/04 | 2000 |
+------+------------+------------+
示例结果集:
+------+------------+------------+
| Type | MySQL | OrderPrice |
+======+============+============+
| 1 | 2008/11/12 | 1000 |
| 1 | 2008/10/23 | 2000 |
| 3 | 2008/08/30 | 2000 |
| 3 | 2008/10/04 | 2100 |
| 3 | 2008/08/30 | 2000 |
| 3 | 2008/10/04 | 2000 |
+------+------------+------------+
答案 0 :(得分:1)
您可以获得O_Id
,其中有多个不同的价格与:
SELECT O_Id
FROM myTable
GROUP BY O_Id
HAVING COUNT(DISTINCT OrderPrice) > 1
并将其用作内部语句以获取这些O_Id
的所有行:
SELECT *
FROM myTable
WHERE O_Id IN (
SELECT O_Id
FROM myTable
GROUP BY O_Id
HAVING COUNT(DISTINCT OrderPrice) > 1
)
答案 1 :(得分:0)
以下是使用Exists
的解决方案:
Select * From OrderTable O
Where Exists(
Select O_Id From OrderTable
Where O_Id = O.O_Id
Group By O_Id
Having Count(Distinct OrderPrice) > 1 )