在MySQL中查找包含给定值的列

在MySQL中查找包含给定值的列,mysql,cell,Mysql,Cell,我在MySQL数据库中有一个表。我得到一个值,该值作为该表中的单元格值出现,但我不知道它是哪个单元格,即该单元格的行和列。查找该值所属列的最有效方法是什么?提前谢谢 例如: Column_1 | Column_2 | Column_3 1 | 2 | 3 4 | 5 | 6 7 | 8 | 9 现在我得到一个输入值“8”。我想知道是否有一种有效的方法来确定“8”的值属于列2。奇怪的是,您不知道数据在哪一列,因为

我在MySQL数据库中有一个表。我得到一个值,该值作为该表中的单元格值出现,但我不知道它是哪个单元格,即该单元格的行和列。查找该值所属列的最有效方法是什么?提前谢谢

例如:

Column_1 | Column_2 | Column_3
1        | 2        | 3
4        | 5        | 6
7        | 8        | 9

现在我得到一个输入值“8”。我想知道是否有一种有效的方法来确定“8”的值属于列2。

奇怪的是,您不知道数据在哪一列,因为列应该有一个定义良好的函数

[原始答复已删除。]

编辑:您更新的帖子只要求提供专栏。在这种情况下,您不需要该视图,只需运行此查询即可

SELECT col FROM (
   SELECT "Column_1" AS col, Column_1 AS value FROM YourTable
   UNION ALL SELECT "Column_2", Column_2 FROM YourTable
   UNION ALL SELECT "Column_3", Column_3 FROM YourTable
) allValues
WHERE value=8;

当您对您的表运行此查询时,它将返回“Column_2”

而不了解有关您的应用程序的更多信息,您有几个选项:

  • 使用MySQL内置的全文搜索。您可以在MySQL文档中检查MATCH函数
  • 根据应用程序的需要,您可以决定使用外部全文搜索索引(如Solr或Sphynx)为整个表编制索引。这提供了即时响应时间,但您需要不断更新索引
  • 您可以在MySQL中执行类似的查询,遍历表中的所有列(CPU和时间都非常昂贵)

您正在使用重复组设计此表,这并不令人满意

您应该创建第二个表,并将column1、column2和column2的值存储在一列中的三行上


了解的规则以了解更多详细信息。

在我的情况下,表结构大部分时间都会不断变化。所以我们可以假设我们可以通过MySQL查询访问整个表的列名和类型。我的第一张桌子很好用。让我在其他桌子上试试,我会给你回复的。谢谢我不知道列中的函数的原因是,这些表是由用户在空白表中手动创建的。用户没有指定函数,只是将数据写入表中并保存。我理解。所以列和其中的数据之间没有真正的逻辑关系?如果是这种情况,并且您更希望将数据放在一列中,那么可以使用我的查询生成一个具有单个列的数据集,并将数据作为新表插入。查看MySQL手册中的SELECTINTO语法。(或从SELECT插入…第一个创建一个新表,第二个将数据插入现有表。)列和存储在其中的数据之间应该存在逻辑关系,但我们不知道它们。推断这种逻辑关系是我们研究项目的一部分。事情就是这样:)啊哈!听起来你的工作很有吸引力——祝你好运!我不知道如何使用match函数来获取它所属的确切列。我没有标准化表的原因是,这些表是由用户在空白表的单元格中写入数据手动创建的。用户没有指定函数,只是将数据写入表中并保存。这是我们研究项目的一部分,然后我们尝试推断列之间可能存在的函数并对表进行规范化。我可以预测您研究的结论:让用户输入数据,而不是代码(DDL算作代码)。