我不知道如何搜索这个,所以我会把它扔到那里:
| Field 1 | Field 2 | Field 3 |
+=========+=========+=========+
| 001 | a | xxx |
| 002 | c | xxx |
| 003 | b | xxx |
| 001 | b | xxx |
| 001 | c | xxx |
| 002 | b | xxx |
+=========+=========+=========+
我需要主要检查Field 2
。如果Field 2
等于“a”,那么我需要从该行获取Field 1
条目,然后选择共享该特定Field 1
条目的所有行。
我真的不知道怎么把它写成文字,但基于上表的示例输出将是:
| Field 1 | Field 2 | Field 3 |
+=========+=========+=========+
| 001 | a | xxx |
| 001 | b | xxx |
| 001 | c | xxx |
+=========+=========+=========+
答案 0 :(得分:2)
你想把你的桌子加入到自己身边。
SELECT t1.field1, t1.field2, t1.field3
FROM table1 t1
INNER JOIN table1 t2 ON t1.field1 = t2.field1
WHERE t2.field2 = 'a'
这将拉出field2中a
的所有记录,并拉出您在示例中显示的列。
答案 1 :(得分:1)
使用子查询:
SELECT *
FROM yourtable
WHERE yourtable.Field1 IN (
SELECT DISTINCT Field1
FROM yourtable
WHERE Field2 = 'a'
) AS childquery
子查询获取Field2为A的所有Field1记录,然后外部查询获取具有匹配Field1的所有记录。
答案 2 :(得分:0)
你可以通过简单的IN查询来实现:
SELECT *
FROM TABLE1 AS A
WHERE FIELD1 IN
(
SELECT FIELD1
FROM TABLE1
WHERE FIELD2 = 'a'
)