我的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
答案 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)