Mysql 多行比较

Mysql 多行比较,mysql,Mysql,我正在尝试运行一个查询,该查询将比较同一表中的多行,并显示所有匹配的结果 例如,我的数据如下所示: +-------------+-----------+---------+------------+-------+ | activity_id | d_id | tech_id | timestamp | value | +-------------+-----------+---------+------------+-------+ | 39248078 | 1 | 1

我正在尝试运行一个查询,该查询将比较同一表中的多行,并显示所有匹配的结果

例如,我的数据如下所示:

+-------------+-----------+---------+------------+-------+
| activity_id | d_id | tech_id | timestamp  | value |
+-------------+-----------+---------+------------+-------+
|    39248078 |    1 |     1 | 2014-03-09 |     1 |
|    39248079 |    2 |     1 | 2014-03-06 |     1 |
|    39248082 |    3 |     1 | 2014-04-09 |     0 |
|    39248085 |    1 |     2 | 2014-03-13 |     1 |
|    39248088 |    3 |     2 | 2014-07-17 |     1 |
|    39248091 |    1 |     3 | 2014-02-07 |     1 |
|    39248093 |    2 |     3 | 2014-12-02 |     0 |
+-------------+-----------+---------+------------+-------+
目标是获取所有d_id,其中tech_id=3,tech_id=1或tech_id=2。所以在这种情况下,结果应该是1和2,而不是3

我已经研究了子查询,但无法使其工作。任何帮助都将不胜感激。

编辑:

with CTE as 
(
 select * from table
 where tech_id = 3
)
select c.d_id 
from CTE c
where tech_id = 2 or tech_id = 3
如果不起作用,请告诉我

也许是这样的? 我还没有测试过它,但从我的理解来看,这样的东西应该是可行的

SELECT * FROM (
SELECT activity_id, d_id, tech_id, timestamp, value FROM test
WHERE tech_id = 3
) as temp
JOIN test t on t.d_id = temp.d_id
WHERE t.tech_id = 1 OR t.tech_id = 2
以CTE为例 从表中选择* 其中tech_id=3 选择c.d\U id 来自CTE c
其中tech_id=2或tech_id=3不清楚。。。您能显示结果集吗?您的技术id不能同时等于3和1或2???我正在寻找的结果集是:|d|id | 1 | 2我基本上想要得到一个所有d|id的列表,其中tech|id为3,然后根据tech|id为1或2的所有d|id对它们进行过滤,并且只得到d|id同时存在于两者中的那些。这不是打字错误。我基本上想得到一个所有d|id的列表,其中tech|id为3,然后根据tech|id为1或2的所有d|id对它们进行过滤,只得到d|id在两者中都存在的那些。因此最终结果应该是| d|id | 1 | 2我可以提取第一个d|id列表,然后是第二个d|id列表,并在应用层对它们进行比较,但是必须有一种直接在SQL中实现这一点的方法吗?
SELECT * FROM (
SELECT activity_id, d_id, tech_id, timestamp, value FROM test
WHERE tech_id = 3
) as temp
JOIN test t on t.d_id = temp.d_id
WHERE t.tech_id = 1 OR t.tech_id = 2