如何选择除一列之外的表的所有列?
我有近259列我不能在SELECT
声明中提及258列。
还有其他办法吗?
答案 0 :(得分:28)
您可以使用此方法从除以下列之外的所有列中获取数据: -
这样的事情:
SELECT * INTO #TemporaryTable FROM YourTableName
ALTER TABLE #TemporaryTable DROP COLUMN Columnwhichyouwanttoremove
SELECT * FROM #TemporaryTable
DROP TABLE #TemporaryTable
答案 1 :(得分:9)
创建一个视图。是的,在视图创建语句中,您必须列出每个...和...每个...字段...按...名称。
在
然后只是select * from viewname
。
答案 2 :(得分:6)
您可以从sys.columns表中获取列名详细信息
尝试以下查询:
SELECT * FROM SYS.COLUMNS
WHERE object_id = OBJECT_ID('dbo.TableName')
AND [Name] <> 'ColumnName'
DECLARE @sql as VARCHAR(8000)
SET @sql = 'SELECT '
SELECT @sql += [Name] + ', ' FROM SYS.COLUMNS
WHERE object_id = OBJECT_ID('dbo.TableName')
AND [Name] <> 'ColumnName'
SELECT @sql += ' FROM Dbo.TableName'
EXEC(@sql)
答案 3 :(得分:3)
有很多选项,其中之一是:
CREATE TEMPORARY TABLE temp_tb SELECT * FROM orig_tb;
ALTER TABLE temp_tb DROP col_x;
SELECT * FROM temp_tb;
这里col_x是你不想在select语句中包含的列。
答案 4 :(得分:2)
如果不创建新表,您可以简单地执行(例如使用mysqli):
$r = mysqli_query('SELECT column_name FROM information_schema.columns WHERE table_name = table_to_query');
$c = count($r); while($c--) if($r[$c]['column_name'] != 'column_to_remove_from_query') $a[] = $r[$c]['column_name']; else unset($r[$c]);
$r = mysqli_query('SELECT ' . implode(',', $a) . ' FROM table_to_query');
答案 5 :(得分:2)
您可以通过简单的查询来检索列名列表,然后通过在这样的查询中应用将其删除。
SELECT * FROM (
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'TableName'
) AS allColumns
WHERE allColumns.COLUMN_NAME NOT IN ('unwantedCol1', 'unwantedCol2')
答案 6 :(得分:1)
如果您使用的是DataGrip,则可以执行以下操作:
import React from "react";
import { Login, Register } from "./components/index";
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
isLogginActive: true
};
}
componentDidMount() {
//Add .right by default
this.rightSide.classList.add("right");
}
changeState() {
const { isLogginActive } = this.state;
if (isLogginActive) {
this.rightSide.classList.remove("right");
this.rightSide.classList.add("left");
} else {
this.rightSide.classList.remove("left");
this.rightSide.classList.add("right");
}
this.setState(prevState => ({ isLogginActive: !prevState.isLogginActive }));
}
render() {
const { isLogginActive } = this.state;
const current = isLogginActive ? "Register" : "Login";
const currentActive = isLogginActive ? "login" : "register";
return (
<div className="App">
<div className="login">
<div className="container" ref={ref => (this.container = ref)}>
{isLogginActive && (
<Login containerRef={ref => (this.current = ref)} />
)}
{!isLogginActive && (
<Register containerRef={ref => (this.current = ref)} />
)}
</div>
<RightSide
current={current}
currentActive={currentActive}
containerRef={ref => (this.rightSide = ref)}
onClick={this.changeState.bind(this)}
/>
</div>
</div>
);
}
}
const RightSide = props => {
return (
<div
className="right-side"
ref={props.containerRef}
onClick={props.onClick}
>
<div className="inner-container">
<div className="text">{props.current}</div>
</div>
</div>
);
};
export default App;
SELECT * FROM <your_table>;
上,然后按*
Alt+Enter
选项的弹出菜单Expand column list
,其中包含完整的列列表答案 7 :(得分:0)
在您的情况下,在对象资源管理器中展开该数据库的列。将列拖到查询区域。
然后只删除您不想要的一两列,然后运行它。我对这些建议比这更容易接受。
答案 8 :(得分:0)
尝试以下查询:
DECLARE @Temp NVARCHAR(MAX);
DECLARE @SQL NVARCHAR(MAX);
SET @Temp = '';
SELECT @Temp = @Temp + COLUMN_NAME + ', ' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='Person' AND COLUMN_NAME NOT IN ('Id')
SET @SQL = 'SELECT ' + SUBSTRING(@Temp, 0, LEN(@Temp)) +' FROM [Person]';
EXECUTE SP_EXECUTESQL @SQL;
答案 9 :(得分:0)
只有一种方法可以实现此列名称。找不到其他方法。您必须列出所有列名
答案 10 :(得分:0)
这不是通用解决方案,但是某些数据库允许您使用正则表达式指定列。
例如,对于Hive,以下查询选择ds和hr以外的所有列:
SELECT `(ds|hr)?+.+` FROM sales
答案 11 :(得分:0)
答案 12 :(得分:0)
ResultSet
返回到主程序,或使用相同的方法进行处理。