在MySQL查询响应中用Null替换重复值

时间:2017-06-20 03:29:45

标签: mysql sql-server database

我的MySQL服务器数据库中有两个表,有一个公共列:

表1

DoubleProperty fontSize22 = new SimpleDoubleProperty(22);
fontSize22.bind(stage.widthProperty().add(stage.heightProperty()).divide(90));
homeButton.styleProperty().bind(Bindings.concat("-fx-font-size: ", fontSize22.asString(), "px;"));

表2

+---------------------------------+
| columnA       | columnB         |
+---------------------------------+
|  123          |  lorem          |
|  456          |  ipsum          | 
|  456          |  dolor          |
+---------------------------------+

我希望得到+---------------------------------+ | columnA | columnC | +---------------------------------+ | 123 | sit | | 123 | amet | | 123 | consectetur | | 456 | adipiscing | +---------------------------------+ columnB columnC columnA的所有值。我使用的查询是:

123

以下是查询结果

SELECT Table1.columnB, Table2.columnC
FROM Table1
INNER JOIN Table2 ON Table1.columnA = Table2.columnA
WHERE Table1.columnA = '123';

我获得了所需的结果,但我并不想要这个重复值,就像本例中的+---------------------------------+ | columnB | columnC | +---------------------------------+ | lorem | sit | | lorem | amet | | lorem | consectetur | +---------------------------------+ 一样。有没有办法用columnB或空格替换(最后两个)冗余值lorem?类似的东西:

NULL

2 个答案:

答案 0 :(得分:2)

你可以用它。我希望它对你有用。

;WITH temp AS
(
    SELECT *,
           Row_number() over(partition by A.columnA order by A.columnC) as [Rn]           
    FROM 
    (
      SELECT Table1.columnA, Table1.columnB, Table2.columnC
      FROM Table1
      INNER JOIN Table2 ON Table1.columnA = Table2.columnA
      WHERE Table1.columnA = '123'
    ) A
)
SELECT 
(CASE WHEN [Rn] = 1 THEN columnB ELSE NULL END) columnB
,columnC
FROM temp

答案 1 :(得分:1)

基于Tien Nguyen的建议。

        SELECT  IF(ctr = 1, columnB, '') columnB ,
                columnC
        FROM    ( SELECT    a.columnB ,
                            b.columnC ,
                            ROW_NUMBER() OVER ( PARTITION BY a.columnA ORDER BY b.columnA ) AS ctr
                  FROM      Table1 A
                            INNER JOIN Table2 B ON b.columnA = a.columnA
                  WHERE     a.columnA = '123'
                ) tbl

结果:

    columnB     columnC
    ----------- ------------
    lorem       sit
                amet
                consectetur

    (3 row(s) affected)