如何实现select * exclude column

今天朋友有个需求,要将A表合并到B表,表结构相同,但是自增主键有重复,所以需要实现insert into t_dest selecct * exclude col_a from t_src.

最后解决办法,通过group_concat从information_schema中取t_dest的所列,排除col_a。具体做法是这样的:

SET @sql= (SELECT CONCAT('INSERT INTO ','test_b (',GROUP_CONCAT(COLUMN_NAME),') select ',GROUP_CONCAT(COLUMN_NAME),' from ', TABLE_NAME,' ;') FROM information_schema.COLUMNS WHERE table_name = 'test_a' AND TABLE_SCHEMA = 'test' and COLUMN_NAME != 'id');
PREPARE stmt from @sql;
EXECUTE stmt;

思路就是从column表中拿到test_a表中排除id之后的所有字段,然后组合一个sql语句,最后执行sql语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下 SQL 语句来排除某个字段: ``` SELECT column1, column2, column3 FROM table_name; ``` 其中,`table_name` 是要查询的表名,而 `column1, column2, column3` 则是要查询的列名,可以根据需要修改。如果想要排除某个字段,只需要将其从列名列表中移除即可,例如: ``` SELECT column1, column3 FROM table_name; ``` 这样就会查询 `table_name` 表中的 `column1` 和 `column3` 两个字段,并排除了 `column2` 字段。 ### 回答2: 在使用SQL查询语句时,如果希望在SELECT *时排除某个字段,可以采取两种方式。 第一种方式是使用具体的列名代替SELECT *,将除了不需要的字段外的其他字段列出来。例如,如果一个表有字段A、B、C和D,我们希望排除字段C,那么可以使用以下查询语句: SELECT A, B, D FROM 表名; 这样就会只选择A、B和D字段,而不会选择C字段。 第二种方式是使用AS关键字重命名需要保留的字段,然后使用SELECT *,并将需要排除的字段重命名为其他名字以隐藏它。例如,如果我们希望隐藏字段C,可以使用以下查询语句: SELECT *, C AS 隐藏字段 FROM 表名; 这样就会选择所有字段,并将字段C重命名为“隐藏字段”。在查询结果中,我们可以看到其他字段的值,但无法直接看到C字段的值。 通过以上两种方式,可以达到在SELECT *时排除某个字段的目的。具体使用哪种方式,可以根据实际情况和需求来选择。 ### 回答3: 在使用SELECT * 查询时,想要排除某个字段可以使用以下方法。 首先,我们可以通过列举需要的字段来明确指定需要查询的字段,而不是使用通配符 *。例如,假设有一个表table1,包含字段field1、field2和field3,我们想要查询field1和field3的值,可以使用如下语句: SELECT field1, field3 FROM table1; 以上语句将只返回field1和field3的值,而不包含field2。 其次,如果确实需要使用SELECT * 来快速查询表中的所有字段,但又想要排除某个字段,可以使用以下方法: SELECT * FROM table1 WHERE column_name1 != 'exclude'; 在上述示例中,column_name1 是我们想要排除的字段名,'exclude'是该字段中要排除的特定值。这样做将返回除了column_name1 字段中值为'exclude'以外的所有字段和数据。 总而言之,我们可以通过明确指定需要查询的字段或使用WHERE 子句来排除某个特定字段,并满足我们的查询需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值