获取“where value in”的变量列

Posted

技术标签:

【中文标题】获取“where value in”的变量列【英文标题】:Get variable columns for "where value in" 【发布时间】:2016-07-27 21:04:58 【问题描述】:

我正在尝试从表中获取所有列。问题是,每个表的列数量和顺序都是可变的。

是否可以从一个特定的表中获取所有列?

我需要检查具有可变列数的表中是否存在值。

【问题讨论】:

显示您的数据并指定问题... mysql Select all columns from one table and some from another table的可能重复 听起来很糟糕的数据库设计。也许你应该重新考虑一下。 问题是我没有那么多时间因为这是我学徒期的最后一个项目:) 【参考方案1】:

是的,您可以为此使用tablename.*,这是一个简短的示例:

SELECT table1.*
FROM table1
JOIN table2 ON table2.id = table1.id

要检查任何列中是否存在变量,您首先要使用 scaisEdge 发布的查询来选择列:

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'my_database' 
AND TABLE_NAME = 'my_table';

然后您将遍历此查询的结果以构建查询的 IN(column1, column2 e.t.c) 部分

你可以把这条线放在哪里做你的新选择:

WHERE ? IN(column1, column2)

使用准备好的语句,这样你就不会受到 sql 注入的攻击

【讨论】:

不幸的是,这对我没有帮助。我需要检查一个值是否存在于具有可变列数的表中。 所以您需要检查任何列中是否存在变量?我们在谈论子字符串吗?还是完全匹配? 非常!完全匹配..例如我得到了值 abc,我必须检查该值是否存在于任何列中 您可以使用 MATCH 函数。这确实要求字段具有 FULLTEXT 键,并且您还必须输入所有列(尽管您无法匹配 id)或者您使用 IN (column1,),但这也需要您知道列。如果您真的想要,最好的解决方案是使用 information_schema 选择列,然后从结果中动态构建您的查询【参考方案2】:

对于与列相关的值,您可以使用

select * from my_table;

否则你应该使用列名

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'my_database' 
 AND TABLE_NAME = 'my_table';

【讨论】:

以上是关于获取“where value in”的变量列的主要内容,如果未能解决你的问题,请参考以下文章

scala:从变量列列表中获取与最大列值对应的列名

如何在mysql查询中的一个变量中获取多个列

ORA:01422 Exact Fetch记录超过请求的行数,因为列变量获取所有值

R - 获取数据库列列表的函数

如何获取脚本将2个变量的总和添加到表格中的第3列

如何在不使用 XML 路径和临时变量的情况下以一个逗号分隔值获取列值