Sql 如何选择同一表格中不同行的空数据?
我有这三个表(我附加了一个预览)。列表末尾是表“virustotalscans”中的数据示例。有一列名为“virustotal”。每个唯一的样本都有编号,例如165,下一个样本有编号166等等 表VIRUTOTALSSql 如何选择同一表格中不同行的空数据?,sql,select,sqlite,Sql,Select,Sqlite,我有这三个表(我附加了一个预览)。列表末尾是表“virustotalscans”中的数据示例。有一列名为“virustotal”。每个唯一的样本都有编号,例如165,下一个样本有编号166等等 表VIRUTOTALS CREATE TABLE virustotals ( virustotal INTEGER PRIMARY KEY, virustotal_md5_hash TEXT N
CREATE TABLE virustotals (
virustotal INTEGER PRIMARY KEY,
virustotal_md5_hash TEXT NOT NULL,
virustotal_timestamp INTEGER NOT NULL,
virustotal_permalink TEXT NOT NULL
);
CREATE INDEX virustotals_md5_hash_idx
ON virustotals (virustotal_md5_hash);
CREATE TABLE virustotalscans (
virustotalscan INTEGER PRIMARY KEY,
virustotal INTEGER NOT NULL,
virustotalscan_scanner TEXT NOT NULL,
virustotalscan_result TEXT
);
CREATE INDEX virustotalscans_result_idx
ON virustotalscans (virustotalscan_result);
CREATE INDEX virustotalscans_scanner_idx
ON virustotalscans (virustotalscan_scanner);
CREATE INDEX virustotalscans_virustotal_idx
ON virustotalscans (virustotal);
CREATE TABLE downloads (
download INTEGER PRIMARY KEY,
connection INTEGER,
download_url TEXT,
download_md5_hash TEXT
-- CONSTRAINT downloads_connection_fkey FOREIGN KEY (connection) REFERENCES connections (connection)
);
CREATE INDEX downloads_connection_idx ON downloads (connection);
CREATE INDEX downloads_md5_hash_idx
ON downloads (download_md5_hash);
CREATE INDEX downloads_url_idx
ON downloads (download_url);
表VIRUSTOTALSCANS
CREATE TABLE virustotals (
virustotal INTEGER PRIMARY KEY,
virustotal_md5_hash TEXT NOT NULL,
virustotal_timestamp INTEGER NOT NULL,
virustotal_permalink TEXT NOT NULL
);
CREATE INDEX virustotals_md5_hash_idx
ON virustotals (virustotal_md5_hash);
CREATE TABLE virustotalscans (
virustotalscan INTEGER PRIMARY KEY,
virustotal INTEGER NOT NULL,
virustotalscan_scanner TEXT NOT NULL,
virustotalscan_result TEXT
);
CREATE INDEX virustotalscans_result_idx
ON virustotalscans (virustotalscan_result);
CREATE INDEX virustotalscans_scanner_idx
ON virustotalscans (virustotalscan_scanner);
CREATE INDEX virustotalscans_virustotal_idx
ON virustotalscans (virustotal);
CREATE TABLE downloads (
download INTEGER PRIMARY KEY,
connection INTEGER,
download_url TEXT,
download_md5_hash TEXT
-- CONSTRAINT downloads_connection_fkey FOREIGN KEY (connection) REFERENCES connections (connection)
);
CREATE INDEX downloads_connection_idx ON downloads (connection);
CREATE INDEX downloads_md5_hash_idx
ON downloads (download_md5_hash);
CREATE INDEX downloads_url_idx
ON downloads (download_url);
表下载
CREATE TABLE virustotals (
virustotal INTEGER PRIMARY KEY,
virustotal_md5_hash TEXT NOT NULL,
virustotal_timestamp INTEGER NOT NULL,
virustotal_permalink TEXT NOT NULL
);
CREATE INDEX virustotals_md5_hash_idx
ON virustotals (virustotal_md5_hash);
CREATE TABLE virustotalscans (
virustotalscan INTEGER PRIMARY KEY,
virustotal INTEGER NOT NULL,
virustotalscan_scanner TEXT NOT NULL,
virustotalscan_result TEXT
);
CREATE INDEX virustotalscans_result_idx
ON virustotalscans (virustotalscan_result);
CREATE INDEX virustotalscans_scanner_idx
ON virustotalscans (virustotalscan_scanner);
CREATE INDEX virustotalscans_virustotal_idx
ON virustotalscans (virustotal);
CREATE TABLE downloads (
download INTEGER PRIMARY KEY,
connection INTEGER,
download_url TEXT,
download_md5_hash TEXT
-- CONSTRAINT downloads_connection_fkey FOREIGN KEY (connection) REFERENCES connections (connection)
);
CREATE INDEX downloads_connection_idx ON downloads (connection);
CREATE INDEX downloads_md5_hash_idx
ON downloads (download_md5_hash);
CREATE INDEX downloads_url_idx
ON downloads (download_url);
表“virustotalscans”中的数据示例:
现在,我需要选择“virustotalscan\u result”列中所有行上的所有样本为空。因此,我需要选择所有样本,这些样本不使用任何防病毒软件检测VirusTotal。我尝试了此选择:
select distinct downloads.download_md5_hash from virustotalscans, virustotals,
downloads
where downloads.download_md5_hash = virustotals.virustotal_md5_hash and
virustotals.virustotal = virustotalscans.virustotal and
virustotalscans.virustotalscan_result IS NULL;
但我得到了所有样本的MD5哈希…可能是因为所有样本都至少包含一行,这是空的。这是合乎逻辑的,因为某些防病毒软件总是检测不到某些样本
更好的示例:。现在我需要选择sample-number(virustotal列),其中virustotalscan_result列中的所有行都为空。例如,它只能是数字2
你能帮我吗
非常感谢您的回复。您的
pastebin
中似乎只有一个表的示例。如果您在SQL FIDLE中重新创建示例表,您可能会得到更好更快的响应[.如何定义样本
?样本是用表VIRUSTOTALSCANS中的virustotal列定义的,这是编号165。这是一个样本,下一个样本有其他编号。因此更好的示例:。现在我需要选择样本-编号(virustotal列),其中virustotalscan\u列中的所有.line都是空的。例如,它可以是数字2…谢谢,但它仅适用于后面的部分,而不是括号中的选择…因此它仅适用于表virustotalscan。您的评论缺少任何信息,无法让我改进答案。很抱歉,我在后面写了长时间。如果我使用“按具有计数的virustotalscan”从virustotalscan组中选择virustotal(virustotalscan\u结果)=0)它可以工作,我得到两个正确的virustotal值,这两个值没有检测到任何杀毒软件。但是如果我输入all select,我得到很多MD5哈希,我必须中断监听…你能帮我编辑这个选择吗?使用select download\u MD5\u hash,virustotal FROM…
。除了这两个virustotal值之外,你还有其他值吗?谢谢,但是如果我使用你的修改,我只得到与其他列相同的结果-virustotal…:-(所以我得到所有值,我必须插入侦听…我只需要得到两个正确的值,如果我只使用括号中的select,我就得到了,但现在我需要用MD5哈希获得这些值。。。
SELECT download_md5_hash
FROM downloads
JOIN virustotals ON download_md5_hash = virustotal_md5_hash
WHERE virustotal IN (SELECT virustotal
FROM virustotalscans
GROUP BY virustotal
HAVING COUNT(virustotalscan_result) = 0)