包含这些字段的查询,不需要从表中的大字段获取

时间:2016-06-30 12:05:53

标签: mysql sql

我希望查询能够在网页上的表格中显示少量字段,但该表格中有大量字段,但我希望这种类型的查询除了少数字段并显示所有剩余字段的数据< / strong>在网页上。 比如:我有一个包含50个字段的表,

+ -------- + -------- + -------- + ---------- + + ------- --- +
| Col1 | Col2 | Col3 | Col4 | ---- | Col50 |
| --------- | --------- | ---------- | ----------- | | ----------- |
| | | | | ---- | |
| | | | | ---- | |
+ ------- + -------- + -------- + ---------- + + ------ ---- +

但我想在该页面上只显示48个字段。然后除了那两个字段之外的任何查询(Col49和Col50)不需要并显示剩余数据。因此,不要写作: SELECT Col1,Col2,Col3,Col4,... Col48 FROM table;
任何替代写作的方式如此 SELECT * - (Col49,Col50)FROM table;

4 个答案:

答案 0 :(得分:0)

而不是提及select * from ...包括查询中的列名。select col1, col2,...col18 from ..

答案 1 :(得分:0)

这个答案是根据你提出的问题。因此,请在问题中添加更多详细信息以获得更明确的答案。 您需要传递列名才能获取这些列的数据。 e.g。

table_name = dummy_tab

col_1 | col_2 | col_3 | col_4
--------------------------------
  1   | John  |  20   | abc@def
--------------------------------
  2   |  Doe  |  21   | def@xyz

 ...

你可以这样做:

SELECT col_1, col_2 FROM dummy_tab;

这将给出:

 col_1 | col_2 
---------------
   1   | John 
---------------
   2   |  Doe  

答案 2 :(得分:0)

解决此问题的最佳方法是使用视图,您可以使用这18个列创建视图并从中检索数据

示例

mysql> SELECT * FROM calls;
+----+------------+---------+
| id | date       | user_id |
+----+------------+---------+
|  1 | 2016-06-22 |       1 |
|  2 | 2016-06-22 |    NULL |
|  3 | 2016-06-22 |    NULL |
|  4 | 2016-06-23 |       2 |
|  5 | 2016-06-23 |       1 |
|  6 | 2016-06-23 |       1 |
|  7 | 2016-06-23 |    NULL |
+----+------------+---------+
7 rows in set (0.06 sec)

mysql> CREATE VIEW C_VIEW AS
    ->     SELECT id,date from calls;
Query OK, 0 rows affected (0.20 sec)

mysql> select * from C_VIEW;
+----+------------+
| id | date       |
+----+------------+
|  1 | 2016-06-22 |
|  2 | 2016-06-22 |
|  3 | 2016-06-22 |
|  4 | 2016-06-23 |
|  5 | 2016-06-23 |
|  6 | 2016-06-23 |
|  7 | 2016-06-23 |
+----+------------+
7 rows in set (0.00 sec)

答案 3 :(得分:0)

有点痛苦,但你可以通过查询information_schema并排除你不想要的字段或位置来减少工作量和错误。

CREATE TABLE `dates` (
    `id` INT(11) NULL DEFAULT NULL,
    `dte` DATE NULL DEFAULT NULL,
    `CalMonth` INT(11) NULL DEFAULT NULL,
    `CalMonthDescLong` VARCHAR(10) NULL DEFAULT NULL,
    `CalMonthDescShort` VARCHAR(10) NULL DEFAULT NULL,
    `calQtr` INT(11) NULL DEFAULT NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
use information_schema;
select concat('`',REPLACE(t.NAME,'/dates','.'), '`',replace(T.NAME,'sandbox/',''),c.NAME,'`',',') 
from INNODB_SYS_TABLES  t
join    INNODB_SYS_COLUMNS c on c.TABLE_ID = t.TABLE_ID
where t.NAME like ('sandbox%')
    and t.name like ('%dates')
    and pos not in(1,4)

最好从命令行运行,输出通过管道传输到文本文件。