我正在尝试使用select语句获取某个MySQL表中除了某一列之外的所有列。有没有简单的方法可以做到这一点?
编辑:该表中有53个列(不是我设计的)。
我正在尝试使用select语句获取某个MySQL表中除了某一列之外的所有列。有没有简单的方法可以做到这一点?
编辑:该表中有53个列(不是我设计的)。
SELECT `purchase_history`.`id`,
`purchase_history`.`user_id`,
`purchase_history`.`deleted_at`
FROM `fs_normal_run_2`.`purchase_history`;
SELECT * FROM fs_normal_run_2.purchase_history;
现在你可以只删除那些不想要的。
我回答这个问题有点晚了,但这是我一直以来的做法,坦白说,它比最佳答案好100倍,也更整洁。我只希望有人能看到它并觉得有用。
//create an array, we will call it here.
$here = array();
//create an SQL query in order to get all of the column names
$SQL = "SHOW COLUMNS FROM Table";
//put all of the column names in the array
foreach($conn->query($SQL) as $row) {
$here[] = $row[0];
}
//now search through the array containing the column names for the name of the column, in this case i used the common ID field as an example
$key = array_search('ID', $here);
//now delete the entry
unset($here[$key]);
SELECT
语句--甚至连这个词都没有出现。 - FrungiSelect * 是 SQL 的反模式。出于许多原因,它不应该在生产代码中使用,包括:
它需要更长的处理时间。当事情运行数百万次时,这些微小的差别可能很重要。一个由此类粗糙编码引起的缓慢数据库是最难进行性能调整的。
这意味着您可能会发送比所需更多的数据,从而导致服务器和网络瓶颈。如果您有内部连接,则发送比所需更多的数据的机会为100%。
它会导致维护问题,特别是当您添加了新列但不希望在所有地方都看到时。此外,如果您有一个新列,您可能需要对接口进行一些操作以确定如何处理该列。
它可能会破坏视图(我知道在 SQL Server 中是这样,但在 MySQL 中可能是真实的也可能不是)。
如果有人愚蠢到以不同的顺序重建表格(尽管你不应该这样做,但这种情况时有发生),那么各种代码都可能出现问题。特别是在插入例子中,如果没有指定,数据库只能按照列的顺序进行操作,所以突然间你会把城市名放到地址_3字段中。当数据类型改变时,这已经很糟糕了,但当交换的列具有相同的数据类型时,就更糟糕了,因为你可能会一段时间内插入错误的数据,而清理起来非常麻烦。你需要关心数据完整性。