Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用另一个表中的变量循环SQL查询_Sql_Sqlite_Osquery - Fatal编程技术网

使用另一个表中的变量循环SQL查询

使用另一个表中的变量循环SQL查询,sql,sqlite,osquery,Sql,Sqlite,Osquery,我有两个表file&users,我想查看C:\users\%USERNAME%\Documents 例如,这将从“示例”文档中获取信息: SELECT * FROM file WHERE path LIKE 'C:\Users\example\Documents\%%'; 但是用户名来自用户 SELECT username FROM users; 返回 +--------------------+ | username | +--------------------+

我有两个表file&users,我想查看
C:\users\%USERNAME%\Documents

例如,这将从“示例”文档中获取信息:

SELECT * 
FROM file 
WHERE path LIKE 'C:\Users\example\Documents\%%';
但是用户名来自用户

SELECT username FROM users;
返回

+--------------------+
| username           |
+--------------------+
| Administrator      |
| DefaultAccount     |
| example            |
| Guest              |
| WDAGUtilityAccount |
| SYSTEM             |
| LOCAL SERVICE      |
| NETWORK SERVICE    |
+--------------------+
此外,还有:

SELECT directory FROM users;

+---------------------------------------------+
| directory                                   |
+---------------------------------------------+
|                                             |
|                                             |
| C:\Users\example                            |
|                                             |
|                                             |
| %systemroot%\system32\config\systemprofile  |
| %systemroot%\ServiceProfiles\LocalService   |
| %systemroot%\ServiceProfiles\NetworkService |
+---------------------------------------------+
它提供了路径的第一部分,但仍然无法将“文档”连接到查询的结尾,也无法运行文件查询

那么,如何循环遍历每个用户名呢


我已经尝试过修改,但两个表都无法修改

这是使用
联接
查询的绝佳机会:

SELECT f.*
FROM file f JOIN users u
WHERE f.path LIKE 'C:\Users\' || u.username || '\Documents\%%'
运行此查询时,osquery将首先生成用户列表,然后将用户名替换为提供给
文件
表的路径


JOIN
是一种非常强大的组合各种表的结果的方法,值得花一些时间来试验和学习如何使用这种能力。

Zach的答案很好,但有时用户的目录可以被命名为不同于其各自的用户名

谢天谢地,我们在
users
表中还有
directory
列,它返回用户的主目录。使用此列将防止目录/用户名不匹配导致查询输出出现问题:

选择f*
从文件f加入用户u
其中f.path类似于u.directory | |'\Documents\%';

这两个表是如何关联的?发布示例数据。我已经发布了示例数据,以及在原始发布中获取数据的查询。因此,这两个表的相关列是表文件的路径和表用户的目录?是的,我想将来自用户的文档附加到每个目录,然后运行SELECT*from文件,其中路径类似于“连接目录”