我希望查询能够在网页上的表格中显示少量字段,但该表格中有大量字段,但我希望这种类型的查询除了少数字段并显示所有剩余字段的数据< / strong>在网页上。 比如:我有一个包含50个字段的表,
+ -------- + -------- + -------- + ---------- + + ------- --- +
| Col1 | Col2 | Col3 | Col4 | ---- | Col50 |
| --------- | --------- | ---------- | ----------- | | ----------- |
| | | | | ---- | |
| | | | | ---- | |
+ ------- + -------- + -------- + ---------- + + ------ ---- +
但我想在该页面上只显示48个字段。然后除了那两个字段之外的任何查询(Col49和Col50)不需要并显示剩余数据。因此,不要写作: SELECT Col1,Col2,Col3,Col4,... Col48 FROM table;
任何替代写作的方式如此 SELECT * - (Col49,Col50)FROM table;
答案 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)
最好从命令行运行,输出通过管道传输到文本文件。