如何在一个查询中获取此数据?

时间:2014-04-22 15:20:54

标签: sql

我想在简单查询中获取此数据

我用

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**

3 个答案:

答案 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
)

Demo

结果:

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进行调整,具体而言)以及用户选择更大的差异