如何使用MySQL查询从表中选择除一列之外的所有内容?

18 浏览
0 Comments

如何使用MySQL查询从表中选择除一列之外的所有内容?

我想使用MySQL从表中选择除一个列之外的所有列。\n我知道我们可以使用以下方法选择所有列:\n


\n但是如何从表中排除一个特定的列呢?

0
0 Comments

问题的原因是想要从表中选择所有列,但是排除一个特定的列。解决方法是使用MySQL查询语句,而不是使用*通配符,列出表中的所有列,但不包含不想要的列。可以使用MySQL的信息模式来查询表中的所有列,并将返回的结果粘贴到代码中,以避免手动输入列名。查询示例如下:

SELECT CONCAT(column_name, ',') FROM information_schema.columns WHERE table_name = 'posts' AND column_name NOT IN ('column name to exclude')

然后将结果复制粘贴到代码中,删除最后的逗号。许多查询工具也可以帮助您以这种方式生成查询,或者显示它们正在运行的查询,您可以将其复制粘贴到代码中。

您可能会发现,通过一个允许您将表视为对象的库来访问数据库会更容易。虽然我不是PHP程序员,但在C#中,我们有像实体框架这样的库,可以让我们的代码中的Person对象具有4个属性(Name,Age,Job,SSN),并告诉它它由tblPerson表(有5列)支持,当进行查询时,它不会下载第五列。我相信PHP也会有类似的东西,这样就不必一直编写冗长的SELECT blah, blah2, blah3 ...语句了。

有时不使用*也有好处,如果有人向表中添加了一个与另一列同名的列,您的查询和代码仍然可以正常工作。如果您使用了以下语句:

SELECT * FROM person JOIN address ON ...

并且person表中有一个在前端应用程序中使用的Status列,如果有人稍后在address表中添加了另一个Status列,您将会得到两个Status列,您的前端可能无法正确处理它们;它可能会覆盖第一个列或导致崩溃。如果您避免使用*通配符,而是通过列名选择所需的列,系统将继续正常工作,即使有了新的列。

0