Select多次返回同一行

时间:2013-10-07 00:12:38

标签: sql

我有以下问题:

在DB中,我有两个表。第一个表中一列的值可以出现在第二个列中的两个不同列中。

所以,配置如下:

TABLE_A:列Print_group 表_B:列Print_digital和Print_offset

Table_A的不同行和Print_group列中的值可以出现在Table_B的一行中,但位于不同的列中。

我有以下查询:

SELECT DISTINCT * FROM Table_A 
INNER JOIN  B ON (Table_A. Print_digital = Table_B.Print_group OR 
Table_A.Print_offset = Table_B.Print_group)

问题是此查询从Table_A返回相同的行两次。

我做错了什么?什么是正确的查询?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您只需要澄清您的字段来自Table_A

SELECT DISTINCT A.* 
FROM Table_A A 
    INNER JOIN B ON A.Print_digital = B.Print_group
        OR A.Print_offset = B.Print_group

修改

鉴于您的意见,看起来您只需要SELECT DISTINCT B.*

SELECT DISTINCT B.* 
FROM Table_A A 
    INNER JOIN B ON A.Print_digital = B.Print_group
        OR A.Print_offset = B.Print_group

答案 1 :(得分:0)

我还有另外一个问题......首先,要明确的是,正确的查询版本是

SELECT DISTINCT A. * FROM Table_A A.     INNER JOIN B ON A.Print_digital = B.Print_group         或A.Print_offset = B.Print_group。

如果我想要它还返回B表中的一列,它再次返回重复的行。我的查询(坏的)是以下一个:

SELECT DISTINCT A. *,B.Id FROM Table_A A.     INNER JOIN B ON A.Print_digital = B.Print_group         或A.Print_offset = B.Print_group