Mysql 我应该如何更改我的查询?
我有一个显示如下数据的查询:Mysql 我应该如何更改我的查询?,mysql,sql,sql-server,database,oracle,Mysql,Sql,Sql Server,Database,Oracle,我有一个显示如下数据的查询: columnA columnB 1 a 1 b 1 c 2 a 2 x 3 z 3 w columnA columnB 1 a b c 2 a x 3 z w 但我想展示如下数据: columnA columnB 1
columnA columnB
1 a
1 b
1 c
2 a
2 x
3 z
3 w
columnA columnB
1 a
b
c
2 a
x
3 z
w
但我想展示如下数据:
columnA columnB
1 a
1 b
1 c
2 a
2 x
3 z
3 w
columnA columnB
1 a
b
c
2 a
x
3 z
w
基本上,在重复的数据上,我想显示一个空单元格。
可能吗?
这是我最初的疑问:
SELECT t1.columnnA, t2.columnB
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id
GROUP BY t1.columnnA, t2.columnB
ORDER BY t1.columnnA, t2.columnB;
我应该如何更改我的查询?
提前感谢。对于mysql,您可以使用变量和
CASE
检查值是否为新值或重复值
SELECT
CASE WHEN @check != columnA THEN columnA END refcolumnA,
columnB,
@check:=columnA
FROM Table1
,(SELECT @check:=0) t
ORDER BY columnA
对于mysql,您可以使用变量和
CASE
检查值是否为新值或重复值
SELECT
CASE WHEN @check != columnA THEN columnA END refcolumnA,
columnB,
@check:=columnA
FROM Table1
,(SELECT @check:=0) t
ORDER BY columnA
对于Oracle flavor:
SELECT (CASE WHEN rnum = 1 THEN v1.A ELSE NULL END) A, B
FROM ( SELECT t1.columnA A,
t2.columnB B,
ROW_NUMBER () OVER (PARTITION BY t1.id ORDER BY t1.columnA)
rnum
FROM t1 INNER JOIN t2 ON (t1.id = t2.id)
ORDER BY t1.columnA, t2.columnB) v1
对于Oracle flavor:
SELECT (CASE WHEN rnum = 1 THEN v1.A ELSE NULL END) A, B
FROM ( SELECT t1.columnA A,
t2.columnB B,
ROW_NUMBER () OVER (PARTITION BY t1.id ORDER BY t1.columnA)
rnum
FROM t1 INNER JOIN t2 ON (t1.id = t2.id)
ORDER BY t1.columnA, t2.columnB) v1
好吧,这是哪个数据库?您在标签中列出了三种不同的标签。这是可能的,但是考虑在应用程序级别上处理数据显示的问题(假设您有一个)。此外,在没有任何聚合功能的情况下,使用GROUPBY(在我看来)是不合适的。让它成为正确的人!把桌子放在这里,我没有水晶球!那么,这是哪个数据库?您在标签中列出了三种不同的标签。这是可能的,但是考虑在应用程序级别上处理数据显示的问题(假设您有一个)。此外,在没有任何聚合功能的情况下,使用GROUPBY(在我看来)是不合适的。让它成为正确的人!把桌子放在这里,我没有水晶球!