sqlite 从pragma_table_info的子查询中获取列的值

n9vozmp4  于 2023-05-07  发布在  SQLite
关注(0)|答案(1)|浏览(242)

我试图从查询(SQLite)中获取行的值:

SELECT
(SELECT CAST(name AS TEXT)
FROM pragma_table_info('0')
WHERE CAST(name AS REAL) <= 9
ORDER BY CAST(name AS REAL) DESC
LIMIT 1)
FROM "0"
WHERE "column2" = 'some_sh';

该表包括:
column2,1,3,6,9(列名)
a、20、30、40、50(数据放置)...
上面的查询返回给我的不是'50',而是'9',即列名而不是值。这就像只是查询的一部分:

SELECT CAST(name AS TEXT)
FROM pragma_table_info('0')
WHERE CAST(name AS REAL) <= 9
ORDER BY CAST(name AS REAL) DESC
LIMIT 1) AS column_name

没有

SELECT...FROM "0"
WHERE "column2" = 'some_sh';

我不明白如何从找到的最大列名(number)的行中提取值。乍一看,它看起来是正确的,就像查询一样:

SELECT "9"
FROM "0"
WHERE "column2" = 'some_sh';
q3aa0525

q3aa05251#

如果你想要两个或更多列值的最大值,你可以使用MAX()标量函数:

SELECT MAX(`1`, `3`, `6`, `9`)
FROM `0`
WHERE ....

如果这些列是可空的,则应该为每一列使用COALESCE()

MAX(COALESCE(`1`, 0), COALESCE(`3`, 0), COALESCE(`6`, 0), COALESCE(`9`, 0))

用这些列可能包含的最小值替换0

相关问题