我是 SQL 的新手,我意识到我还有很多东西要学。我正在将一组 ISAM 文件转换为 MySQL 表。我正在创建的一些表有数百列。为了更轻松地查看我的转换是否正常工作,我想在我的 SELECT 结果中一次只显示一部分列。
例如,我只想查看日期或金额(即小数)。这样可以更轻松地查看这些字段中的值是否正确。
我在 MySQL 命令行下工作,如果可以避免,我宁愿不指定一长列列名。有没有办法让我的 Select 语句只显示我感兴趣的列类型?
(添加于 2016 年 5 月 12 日) 我使用了 Uueerdo 语法的变体来创建 View :
create view dates_view as concat('select ', group_concat(column_name), ' ',' from ', table_schema, '.', table_name, ';') from information_schema.columns where table_name = 'binders_tbl' 和 data_type in ('日期');
当我输入 select * from dates_view;我得到这个值:
从 aesdb.binders_tbl 中选择 binder_effectiveDate、binder_expirationDate、binder_submissionCreatedDate、binder_f irstQuotedDate、binder_boundDate、binder_invoicedDate、binder_terminatedDate、binder_ cancelledDate;
我试过但找不到将此 View 与“select * from binders_tbl;”一起使用的方法仅显示上述日期字段及其值。
如果有人能指导我找到“连接”或“子查询”解决方案,我将不胜感激。现在,我将坚持根据需要列出所有单独的列。另外,我将学习更多基础和中级 SQL。感谢那些回复的人。
(添加于 2016 年 5 月 20 日) 我找到了解决问题的方法。以防万一它可以帮助其他人:
CREATE VIEW DateCols_View AS SELECT Table1_SelectionCriteriaField, Table1_Date1, Table1_Date2, Table1_Date3 FROM Table1;
SELECT * FROM DateCols_View WHERE Table1_SelectionCriteriaField(符合某些条件);
我的解决方法有2 个缺点。 第一 是我必须包括我计划稍后使用的任何选择条件字段。但是只要稍加考虑,我就可以为不同的显示创建具有不同列集的多个 View 。这将让我在处理一组记录时只显示我希望看到的那些列。我计划为日期、金额、标志等创建单独的 View 。
另一个缺点是我必须为我计划使用的每个表或联接组合创建一组单独的 View 。
我希望随着我对 SQL 的了解越来越多,我会找到一种方法来概括这种技术(使其更像脚本或宏)并进一步简化它。
最佳答案
不,您必须指定列名。没有用于动态字段包含的语法,但是您可以使用 information_schema(如下所示)来生成查询供您使用。
SELECT CONCAT('SELECT ', GROUP_CONCAT(column_name), ' '
,'FROM `', table_schema, '`.`', table_name, '`;'
FROM information_schema.columns
WHERE table_schema = 'yourschemaname'
AND table_name = 'yourtablename'
AND data_type IN ('timestamp', 'date'[, etc....])
;
关于mysql - 使用 MySQL 命令行,如何在 Select 语句中仅显示日期或金额(十进制)列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37174746/