0

我不知道如何搜索这个,所以我就把它扔在那里:

| 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   |
+=========+=========+=========+
4

3 回答 3

2

您想将您的表连接到自身。

SELECT t1.field1, t1.field2, t1.field3
FROM table1 t1
    INNER JOIN table1 t2 ON t1.field1 = t2.field1
WHERE t2.field2 = 'a'

这将提取afield2 中的所有记录并提取您在示例中显示的列。

SQL小提琴

于 2013-07-10T17:36:13.387 回答
1

使用子查询:

SELECT *
FROM yourtable
WHERE yourtable.Field1 IN (
   SELECT DISTINCT Field1
   FROM yourtable
   WHERE Field2 = 'a'
) AS childquery

子查询获取 Field2 为 A 的所有 Field1 记录,然后外部查询获取具有匹配 Field1 的全部记录。

于 2013-07-10T17:34:14.740 回答
0

你可以通过简单的 IN 查询来做到这一点:

SELECT *
FROM TABLE1 AS A 
WHERE FIELD1 IN 
(
 SELECT FIELD1
 FROM TABLE1
 WHERE FIELD2 = 'a'
) 

SQLFIDDLE

于 2013-07-10T17:39:03.483 回答