注册

查询表中所有字段语句,怎么把没主键的也查询到?

达梦VIP用户 2024/03/08 630 7 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM7
【操作系统】:docker
【CPU】: docker
【问题描述】*:

SQL 语句:

SELECT TAB.NAME TABLE_NAME ,
          COLS.NAME COLUMN_NAME,
          COLS.TYPE$ DATA_TYPE,
          SF_COL_IS_IDX_KEY(INDS.KEYNUM, INDS.KEYINFO, COLS.COLID) COLUMN_KEY ,
          CASE COLS.INFO2 WHEN '1' THEN 'auto_increment' ELSE '' END EXTRA,
          NULL COLLATION_NAME,
          COLS.COLID,
          concat(cols.TYPE$,'(',COLS.LENGTH$,')') COLUMN_TYPE 
     FROM(SELECT ID,
                  SCHID,
                  NAME
             FROM SYS.SYSOBJECTS 
            WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'UTAB') TAB 
LEFT JOIN SYS.SYSCOLUMNS COLS
       on TAB.ID=COLS.ID
LEFT JOIN (SELECT ID, PID, NAME FROM SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX') OBJ_INDS 
       on TAB.ID = OBJ_INDS.PID 
LEFT JOIN SYS.SYSINDEXES INDS 
       on INDS.ID= OBJ_INDS.ID
    WHERE TAB.SCHID = (SELECT ID FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCH' AND NAME = 'SYSDBA' ) and (INDS.XTYPE
                    & 0x01) = 1 
 ORDER BY COLS.COLID 

STUDENT 表结构:
image.png
SC 表结构:
image.png

执行结果:

image.png

可以看到只能查询到STUDENT的表结构,不能查询到SC的表结构,发现是因为SC表没有主键的原因;
请问如何修改SQL语句来适应,可查询到所有表结构。

回答 0
暂无回答
扫一扫
联系客服