2012-12-13 193 views
-1

现在我在SQL 100桌,我期待所有表中的一个特定的字符串值,我不知道它是在哪一列。有没有办法在SQL

多个表内搜索select * from table1, table2 where column1 = 'MyLostString'将无法​​工作,因为我不知道它是在哪一列。

是否有一个SQL查询,我必须蛮力搜索的每个表中每一列那MyLostString“

如果我对所有表进行蛮力搜索,是否有一个有效的查询? 例如:

select * from table3 where allcolumns = MyLostString

+0

请不要再次使用隐式连接,它们是SQL反模式并且已过时20年。 – HLGEM

+1

为什么你不知道你的数据模型足够好,知道数据存储在哪里? – HLGEM

+0

我是新来的公司,我的技术架构师正在度假。通过查看控制台,我知道列标题来自View。但是我的技术主管希望列表中的列标题,而不是视图。 – bouncingHippo

回答

1

它是一个RDBMS(或者至少它们中的一个)的限定特征,即意思是值的依赖于它是在例如:值17将具有完全不同的含义,如果其位于customer_id列中,则位于虚构的orders表中的product_id

这导致了这样一个事实,即RDBMS没有很好的装备去搜索一个值,不管在哪个列中可能使用哪个表。

我的建议是首先研究数据模型以试图找出哪个表的哪一列应该保持该值。如果这真的失败了,你会遇到比“丢失的字符串”更糟糕的问题。

最后的重新调整是将数据库转换为更适合全文搜索的东西......例如平面文件。您可能想尝试mydbexportcommand --options | grep -C10 'My lost string'或朋友。

+1

提供建议,如果我将数据库转换为平面文件...这不会是巨大的吗? – bouncingHippo

+0

这就是为什么我建议通过一个过滤器管道,只保留一些上下文 –