Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我应该如何更改我的查询?_Mysql_Sql_Sql Server_Database_Oracle - Fatal编程技术网

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(在我看来)是不合适的。让它成为正确的人!把桌子放在这里,我没有水晶球!