在WHERE子句中比较列与自身

时间:2012-08-30 08:11:52

标签: mysql

这是我的问题。

我有两张桌子,

表1 -

id | Name | Code
1  | test | 4
2  | test | 5
3  | test4| 6
4  | test4| 7
5  | test | 8
6  | test | 9

表2 -

id | Code
1  | 4
2  | 5
3  | 6
4  | 7
5  | 8
6  | 9

这两个表中的代码列是相同的,我正在尝试的是,我正在使用代码来自Table2而我正在选择与它的其他表。例如

SELECT * FROM Table2 LEFT JOIN Table1.Code = Table2.Code WHERE Table2.Code = 4,没关系,现在我从同一个代码的两个表中得到结果,但现在,从那时我有Table1,我想得到所有的行具有相同的姓名。我想要的预期结果是

id | Name | Code
1  | test | 4
2  | test | 5
5  | test | 8
6  | test | 9

1 个答案:

答案 0 :(得分:2)

您可以尝试类似

的内容
SELECT  *
FROm    Table1 t1
WHERE   Name IN (
                    SELECT  t1.Name
                    FROM    Table1 t1 INNER JOIN
                            (
                                SELECT  id,
                                        Code
                                FROM    Table2 
                                WHERE   Table2.Code = 4
                            ) t2    ON  t1.id = t2.id
                                    AND t1.Code = t2.Code
                )

甚至

SELECT  *
FROm    Table1 t1
WHERE   Name IN (
                    SELECT  t1.Name
                    FROM    Table2 t2 INNER JOIN
                            Table1 t1   ON  t2.id = t1.id
                                        AND t2.Code = t1.Code
                    WHERE   Table2.Code = 4
                )