我有一张桌子,如下:
CREATE TABLE `orders` (
`orders_id` int(11) NOT NULL AUTO_INCREMENT,
`external_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`company` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`street_address` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`suburb` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
...
)
我想获取列并像这样输入Name : Type,
作为单列:
orders_id:int(11),
external_id:bigint(20),
id:int(11),
...
应该是这样的:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_schema' AND TABLE_NAME = 'orders';
我不确定如何获取类型以及如何将其转换为所需的输出
答案 0 :(得分:1)
使用以下查询
SELECT SELECT concat(concat(concat(column_name,':'),data_type),',') as columnval
FROM information_schema.columns where TABLE_SCHEMA = 'my_schema' AND TABLE_NAME = 'orders'
编辑:(通过戈登)
如果以上内容正确无误,则应写为:
SELECT concat(column_name, ':' data_type ',') as columnval
FROM information_schema.columns
WHERE TABLE_SCHEMA = 'my_schema' AND TABLE_NAME = 'orders';
答案 1 :(得分:1)
使用此请求:
SELECT
concat(COLUMN_NAME, ':', DATA_TYPE, IF(NUMERIC_PRECISION, CONCAT('(', NUMERIC_PRECISION, ')'), IF(CHARACTER_MAXIMUM_LENGTH, CONCAT('(', CHARACTER_MAXIMUM_LENGTH, ')'), ''))) as name
FROM
INFORMATION_SCHEMA.COLUMNS;
结果:
+----------------------+
| name |
+----------------------+
| id:int(10) |
| co_id:int(10) |
| EVP_type:varchar(255)|
| date:date |
+----------------------+