我无法弄清楚如何要求 SQLite 返回表中的所有条目,其中“列”包含在 select 语句的结果中找到的文本。
我希望它像这样工作,如果这有任何意义:
select * from table1`
where ("%" || (column) || "%") like in
("%" || (select different_column from table2) || "%")`
任何帮助将非常感激。如果有人需要更多信息,请告诉我。
编辑:抱歉,我已将格式编辑为更具可读性,并在下面添加了更多细节。我还删除了我荒谬的难以理解的评论,而只支持编辑这个问题。
table1 (alerts) 包含一个名为“lookup_info”的列,其中存储了一个字符串。该字符串通常如下所示:
---
:account_description: Administrator
:alertable_class: Computer
:alertable_name: exampledotnet
:network_account_type:
:wmi:
:user: exampledomain\administrator
table2 (devices) 包含一个名为“name”的列,其中存储了一个字符串。该字符串通常如下所示:
so-ws-rm101
我想要做的是返回 table1(警报)中的所有条目,其中 table1 的“lookup_info”列不包含存储在 table2 的“名称”列下的 table2(设备)中的计算机名称。
基本上,有一些警报引用了不再存在的计算机名称。我想要那些警报。
谢谢你。
编辑:我创建了一个名为 alerts_fts 的 fts3 表,其中包含 alerts 表中所有条目的 lookup_info 列。这次我再次尝试使用全文搜索进行搜索。这是我正在使用的查询:
select *
from alerts_fts
where alerts_fts.lookup_info match ( select group_concat(name, " OR ")
from Devices
group by "x")
这应该使查询看起来像:
select *
from alerts_fts
where alerts_fts.lookup_info match (cw-ws-example OR so-p2-132-example OR
... OR so-p4-lastexample)
group by "x")
自然,这仍然行不通。查询不返回任何内容。我究竟做错了什么?