如何指定在MySql中的select *查询输出中仅显示某些特定字段?

时间:2013-11-20 12:38:06

标签: mysql sql database

我有以下 MySql 表:

mysql> describe drft1_menu;
+-------------------+---------------------+------+-----+---------------------+----------------+
| Field             | Type                | Null | Key | Default             | Extra          |
+-------------------+---------------------+------+-----+---------------------+----------------+
| id                | int(11)             | NO   | PRI | NULL                | auto_increment |
| menutype          | varchar(24)         | NO   | MUL | NULL                |                |
| title             | varchar(255)        | NO   |     | NULL                |                |
| alias             | varchar(255)        | NO   | MUL | NULL                |                |
| note              | varchar(255)        | NO   |     |                     |                |
| path              | varchar(1024)       | NO   | MUL | NULL                |                |
| link              | varchar(1024)       | NO   |     | NULL                |                |
| type              | varchar(16)         | NO   |     | NULL                |                |
| published         | tinyint(4)          | NO   |     | 0                   |                |
| parent_id         | int(10) unsigned    | NO   |     | 1                   |                |
| level             | int(10) unsigned    | NO   |     | 0                   |                |
| component_id      | int(10) unsigned    | NO   | MUL | 0                   |                |
| checked_out       | int(10) unsigned    | NO   |     | 0                   |                |
| checked_out_time  | timestamp           | NO   |     | 0000-00-00 00:00:00 |                |
| browserNav        | tinyint(4)          | NO   |     | 0                   |                |
| access            | int(10) unsigned    | NO   |     | 0                   |                |
| img               | varchar(255)        | NO   |     | NULL                |                |
| template_style_id | int(10) unsigned    | NO   |     | 0                   |                |
| params            | text                | NO   |     | NULL                |                |
| lft               | int(11)             | NO   | MUL | 0                   |                |
| rgt               | int(11)             | NO   |     | 0                   |                |
| home              | tinyint(3) unsigned | NO   |     | 0                   |                |
| language          | char(7)             | NO   | MUL |                     |                |
| client_id         | tinyint(4)          | NO   | MUL | 0                   |                |
+-------------------+---------------------+------+-----+---------------------+----------------+
24 rows in set (0.00 sec)

正如您所看到的那样,有许多字段,如果我尝试执行:

select * from describe drft1_menu;

获得的输出很糟糕。我只做了一些具体的领域? (例如,仅包含所有包含记录的id,title和alias字段)

TNX

安德烈

5 个答案:

答案 0 :(得分:2)

对于只有一列(或类似命名的列),您可以使用:

SHOW FIELDS FROM `drft1_menu` LIKE 'id'

-for id列。但在常见情况下,这可能无法回答这个问题。为此,有INFORMATION_SCHEMA个数据库(下面的示例列为idtitle):

SELECT 
  * 
FROM 
  INFORMATION_SCHEMA.columns 
WHERE 
  TABLE_SCHEMA='database_name' 
  AND 
  TABLE_NAME='drft1_menu' 
  AND 
  COLUMN_NAME IN ('id', 'title');

-output看起来不像DESCRIBE,但会提供相同的信息。但是,关于这一点的好处是,您只能指定所需的那些描述字段(例如,仅COLUMN_NAMEDATA_TYPE字段)

答案 1 :(得分:1)

从drft1_menu

中选择id,title,别名

答案 2 :(得分:1)

使用此查询:

SELECT id, title, alias FROM drft1_menu;

答案 3 :(得分:0)

至于DESCRIBESHOW COLUMNS的快捷方式,您可以使用最后一个并使用其过滤器过滤到某种模式。

SHOW COLUMNS FROM drft1_menu LIKE 'pattern';

答案 4 :(得分:0)

要仅从表格中获取特定字段,您只需使用

即可
select SELECT id, title, alias,etc.. FROM drft1_menu;

您可以在select查询中使用condition来获取所需的输出。 例如,如果您只需要id列,并且id应小于10,请使用

select SELECT id from drft1_menu where id<10