SQL 语句中如何 SELECT 除了某个字段的所有字段
如题,一般的查询过程中,都是需要什么字段查什么字段,差一点的就直接用 *
将所有列的数据都包含进去。
近日,有一功能,将总店的部分商品数据 copy 一份到分店中。因为商品数据存放在一起,所以需要将表中的旧数据重新导入,并修改分店的 id。通过构造 sql ,查询出来的数据是符合要求的,但同时也把旧数据的 主键 id
携带了进来。插入数据时如果记录含有主键,会插入失败,主键重复。只有想办法去除掉主键。
网上找到如下 SQL(验证有效):
SELECT
CONCAT(
' select ',
GROUP_CONCAT(COLUMN_NAME),
' from ',
TABLE_NAME,
' ;'
)
FROM
information_schema. COLUMNS
WHERE
table_name = 'xxxx'
AND TABLE_SCHEMA = 'ccms_xxx'
AND COLUMN_NAME != 'ID';
其中,table_name
为查询的表名,TABLE_SCHEMA
为查询表所在的数据库,COLUMN_NAME != 'ID'
则排除字段名为 ID 的列。