如何在mysql数据库表中创建空行的第一行选定行

时间:2014-03-18 06:43:31

标签: mysql

问题:

如何在MySQL数据库表中使第一行选定行为空或为空。

注意:

如果从mysql数据库表中选择,第一行的值也应为空或null。

样本表

ID     Name       Age
1      Ramkumar   24
2      Dinesh     26
3      Gupta      25

选择表格时的预期表格格式

ID     Name       Age
1      0          24
2      Dinesh     26
3      Gupta      25

注意: 在选择

时,我期待0而不是Ramkumar

2 个答案:

答案 0 :(得分:1)

试试这个

SELECT ID ,
       CASE WHEN row_number = 1 Then '0' ELSE Name END AS Name , 
       Age 
FROM 
(
SELECT  l.ID AS ID, 
        l.Name AS Name, 
        l.Age AS Age,
        @curRow := @curRow + 1 AS row_number
FROM    Tabe1 l
JOIN    (SELECT @curRow := 0) r
) AS T

OR:

SELECT CASE WHEN row_number = 1 Then NULL ELSE ID END AS ID ,
       CASE WHEN row_number = 1 Then NULL ELSE Name END AS Name , 
       CASE WHEN row_number = 1 Then NULL ELSE Age END AS Age 
FROM 
(
SELECT  l.ID AS ID, 
        l.Name AS Name, 
        l.Age AS Age,
        @curRow := @curRow + 1 AS row_number
FROM    Tabe1 l
JOIN    (SELECT @curRow := 0) r
) AS T

答案 1 :(得分:0)

这是一种方法:

SELECT t.id
     , IF(@first_row = 1, @first_row := NULL, t.name) AS name
     , t.age
  FROM mytable t
 CROSS
  JOIN (SELECT @first_row := 1 AS first_row) fr
 ORDER BY t.name ASC

内联视图(派生表)别名为fr首先运行,并且它具有将用户变量@first_row初始化为值1的副作用。

要在多个列上执行相同的操作,然后仅在其引用的最后一个表达式中将NULL分配给@first_row变量。在此之前,返回文字NULL。或者,使用多个用户变量,每个用于替换一列。

SELECT t.id
     , IF(@first_row = 1, 0, t.name) AS name
     , IF(@first_row = 1, @first_row := NULL, t.age) AS age
  FROM mytable t
 CROSS
  JOIN (SELECT @first_row := 1 AS first_row) fr
 ORDER BY t.id DESC

注意:此行为特定于MySQL,并不保证;它可能会在未来的版本中发生变化。