获取“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”的变量列的主要内容,如果未能解决你的问题,请参考以下文章