如何使用MySQL查询从表中选择除一列之外的所有内容?
问题的原因是想要从表中选择所有列,但是排除一个特定的列。解决方法是使用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列,您的前端可能无法正确处理它们;它可能会覆盖第一个列或导致崩溃。如果您避免使用*通配符,而是通过列名选择所需的列,系统将继续正常工作,即使有了新的列。