1

我有以下问题:

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

所以,配置如下:

TABLE_A:列 Print_group TABLE_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 返回同一行两次。

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

谢谢您的帮助

4

2 回答 2

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
于 2013-10-07T00:20:15.320 回答
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 OR A.Print_offset = B.Print_group

于 2013-10-10T23:08:33.203 回答