怎么能让sql unselect某一列?

m
microsat
楼主 (北美华人网)
select * from table1 这是选择table1的所有fields。 但是这个table1中总共有1023个列。现在我想显示除了下面几列外的所有剩余列: age, sex, race
有没有这样的命令 select *, unselect age, unselect sex, unslect race from table1 来实现我的要求呢?
h
houmitbbs
回复 1楼microsat的帖子
正好最近搜过。有些sql支持 except命令。大部分不支持。可以考虑用drop去掉这些columns,然后select *
麦麦
create temporary table, alter table, drop column, select *
x
xiaoywz
create temporary table, alter table, drop column, select *
麦麦 发表于 2022-04-13 17:24

这个挺好。 恍惚间以为来了stack overflow
麦麦
create temporary table temptable1 as select * from table1;
alter table temptable1 drop column age, drop column sex, drop column race;
select * from temptable1;

m
microsat
回复 1楼microsat的帖子
正好最近搜过。有些sql支持 except命令。大部分不支持。可以考虑用drop去掉这些columns,然后select *
houmitbbs 发表于 2022-04-13 17:22

不能drop。
假设table1, table2中共有一个id的列。 select table1.*, table2.* from table1 join table2 on table1.id = table2.id
那么这个id,会有两个 这个id怎么去掉一个呢?
麦麦
不能drop。
假设table1, table2中共有一个id的列。 select table1.*, table2.* from table1 join table2 on table1.id = table2.id
那么这个id,会有两个 这个id怎么去掉一个呢?
microsat 发表于 2022-04-13 17:29

你把结果temp table,然后drop嘛
m
microsat
你把结果temp table,然后drop嘛
麦麦 发表于 2022-04-13 17:31

但是在temp table里,这个id都是叫id,也就是有两个id名。 drop的时候,怎么知道是要drop 哪个id?
h
houmitbbs
回复 6楼microsat的帖子
如果是join是要用,但是join之后又不用了,也可以之后再drop吧
m
microsat
回复 6楼microsat的帖子
如果是join是要用,但是join之后又不用了,也可以之后再drop吧
houmitbbs 发表于 2022-04-13 17:33

关键是这个id,在join之后,有两个列,都叫这个名字。怎么drop掉第二个id,留第一个id?
h
houmitbbs
回复 8楼microsat的帖子
之前就把一个的名字改掉 比如在 table2里提前改成id1
凤凰重生
回复 8楼microsat的帖子
反正这俩个一样,就随便drop一个喽
m
microsat
回复 8楼microsat的帖子
之前就把一个的名字改掉 比如在 table2里提前改成id1
houmitbbs 发表于 2022-04-13 17:34

这个方法好。谢谢!
r
rewish
不能drop。
假设table1, table2中共有一个id的列。 select table1.*, table2.* from table1 join table2 on table1.id = table2.id
那么这个id,会有两个 这个id怎么去掉一个呢?
microsat 发表于 2022-04-13 17:29

有一种join是可以只留一个ID的。你查查看
m
microsat
有一种join是可以只留一个ID的。你查查看
rewish 发表于 2022-04-13 17:35

inner join?
但是我必须用left join,所以你的这个建议不能采用。 不过谢谢了!
麦麦
有一种join是可以只留一个ID的。你查查看
rewish 发表于 2022-04-13 17:35

SELECT *  FROM table1 LEFT JOIN table2 using(ID)
麦麦
inner join?
但是我必须用left join,所以你的这个建议不能采用。 不过谢谢了!
microsat 发表于 2022-04-13 17:37

你用的平台支持using的话可以用left join
v
vijj
这种temporary table 是会拷贝新建一个table吗?那样的话会不会很慢?还是内部有trick,并不需要copy整个table?
麦麦
这种temporary table 是会拷贝新建一个table吗?那样的话会不会很慢?还是内部有trick,并不需要copy整个table?

vijj 发表于 2022-04-13 17:47

temp table是不会被log的所以我觉得还好
a
azhe
Create a view with selected columns. Then use this view to do your job.
b
brookeyang
pivot table to change colums to row then filter by row