问题:
如何在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答案 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,并不保证;它可能会在未来的版本中发生变化。