我想在简单查询中获取此数据
我用
select user_id , order_id
from product
where order_id = 3
group by user_id , order_id ;
但是任何组的结果都是一行
示例输入:
#user_id #order_id
1 2
1 3
2 3
2 4
3 1
3 4
3 5
4 1
4 3
4 12
4 6
5 4
其中order_id = 4然后
输出:
#user_id #order_id
2 3
2 **4**
3 1
3 **4**
3 5
5 **4**
答案 0 :(得分:1)
这样的东西?
SELECT user_id, order_id
FROM mytable
WHERE user_id IN
(
SELECT user_id
FROM mytable
WHERE order_id = 4
)
答案 1 :(得分:0)
因此,您希望获取order_id
为4或全部具有相同user_id
的所有记录?
您可以使用EXISTS
:
SELECT user_id, order_id
FROM dbo.TableName t1
WHERE EXISTS
(
SELECT 1 FROM dbo.TableName t2
WHERE t1.user_id = t2.user_id
AND t2.order_id = 4
)
结果:
USER_ID ORDER_ID
2 3
2 4
3 1
3 4
3 5
5 4
答案 2 :(得分:0)
试试这个:
SELECT p2.user_id, p2.order_id
FROM product p1
INNER JOIN product p2 ON p1.userid = p2.userid
WHERE p1.order_id = 4
这应该是获取数据的最有效方法。如果这对你来说太慢了,你应该在product
表上创建适当的索引。
另请注意,这可用于指定一个order_id
,需要针对更多order_id
s(DISTINCT
进行调整,具体而言)以及用户选择更大的差异