MySQL:根据特定字段中的数据选择所有字段

时间:2013-07-10 17:31:24

标签: mysql select

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

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

3 个答案:

答案 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的所有记录,并拉出您在示例中显示的列。

SQL Fiddle

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

SQLFIDDLE

相关问题