SQL - 有条件地选择列(如果存在)

use*_*440 6 sql postgresql

我只需要在表中存在列时选择一个列,否则可以设置为null.

下面的示例表,可以说markscol不是必需的,因此需要检查它是否存在

表1:

name marks
joe  10
john 11
mary 13
Run Code Online (Sandbox Code Playgroud)

查询:

select
    name,
    marks if it exists else null as marks1 -- pseudo code
from 
    table1
Run Code Online (Sandbox Code Playgroud)

应该选择marks什么?

Eva*_*oll 5

SQL不允许这样做.您的结果集有两个选项:

  1. 静态包含
  2. 所有从表或子查询到列扩展用*tbl.*

也许这将满足您的需求SELECT * FROM table1;,如果存在,您将始终获得该列.


Jib*_*ran 0

尝试这个:

IF EXISTS( SELECT 1
           FROM information_schema.columns 
           WHERE table_name='your_table' and column_name='your_column') THEN
   SELECT your_column as 'some_column'
ELSE
   SELECT NULL as 'some_column'
END IF
Run Code Online (Sandbox Code Playgroud)