我试图运行一个查询来比较同一个表中的多个行,并向我展示所有匹配的结果。
例如,我的数据将如下所示:
+-------------+-----------+---------+------------+-------+
| 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_ids设为tech_id = 3 AND(tech_id = 1 OR tech_id = 2)。所以在这种情况下,结果应该是1和2而不是3。
我查看了子查询,但无法让它工作。任何帮助将不胜感激。
答案 0 :(得分:1)
SELECT
d_id
FROM table
WHERE d_id IN(
SELECT
d_id
FROM table
WHERE tech_id=3
) AND tech_id=1 OR tech_id=2
让我知道它是否有效!
答案 1 :(得分:0)
编辑:
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
答案 2 :(得分:0)
也许是这样的? 我还没有对它进行测试,但据我所知,这样的事情应该可行
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
答案 3 :(得分:0)
以CTE为 ( 从表中选择* 其中tech_id = 3 ) 选择c.d_id 来自CTE c 其中tech_id = 2或tech_id = 3