我有两个文件,每个文件包含三列。
data1.txt
: https://pastebin.com/ezVr6KPi
# P (Gpa) G / F. unit (a.u.) T (K)
-4.4119598462100 -941.5590019525371 10.0000000000000
-4.4115664473800 -941.5589977004460 30.1000000000000
-4.4084485632200 -941.5589688036446 50.2000000000000
-4.3989188608700 -941.5588816009147 70.3000000000000
...
data2.txt
: https://pastebin.com/veqBi8Er
# P (Gpa) G / F. unit (a.u.) T (K)
7.5789845745700 -941.3858364185293 10.0000000000000
7.5936983738200 -941.3856461092793 30.1000000000000
7.6147899594200 -941.3853929461748 50.2000000000000
7.6413267974900 -941.3851062350891 70.3000000000000
...
我创建了 2 个表,并将列命名为 tables.sql
脚本:
.headers on
CREATE TABLE C_I("P1" TEXT, "G1" TEXT, "T1" TEXT);
CREATE TABLE C_II("P2" TEXT, "G2" TEXT, "T2" TEXT);
我导入数据:
.separator " "
.import './data1.txt' C_I
.import './data2.txt' C_II
然后我从文件中删除 native header ,只是为了更好地引用上面给出的列名称:
select T1 from C_I LIMIT 3;
select P1 from C_I LIMIT 3;
select G1 from C_I LIMIT 3;
DELETE FROM C_I WHERE T1 == '(Gpa)';
DELETE FROM C_I WHERE P1 == '#';
DELETE FROM C_I WHERE G1 == 'P';
DELETE FROM C_II WHERE T2 == '(Gpa)';
DELETE FROM C_II WHERE P2 == '#';
DELETE FROM C_II WHERE G2 == 'P';
select * from C_I LIMIT 3;
select * from C_II LIMIT 3;
我正在尝试获取 P1
的值, G1
, T1
, P2
, G2
, T2
其中:
P1 = P2
(阈值内)AND
T1 = T2
(阈值内)AND
G1 = G2
(在阈值内)。
为此,我这样做:
更新:
选项 1:
SELECT * FROM C_I l1, C_II l2
WHERE
ABS(l1.P1-l2.P2) < 0.005
AND
ABS(l1.T1-l2.T2) < 20.0
AND
ABS(l1.G1-l2.G2) < 0.005
这将打印以下错误:
Error: incomplete SQL: SELECT * FROM C_I l1, C_II l2
WHERE
ABS(l1.P1-l2.P2) < 0.005
AND
ABS(l1.T1-l2.T2) < 20.0
AND
ABS(l1.G1-l2.G2) < 0.005
选项 2:添加 ;
SELECT * FROM C_I l1, C_II l2;
WHERE
ABS(l1.P1-l2.P2) < 0.005
AND
ABS(l1.T1-l2.T2) < 20.0
AND
ABS(l1.G1-l2.G2) < 0.005
在这种情况下,整个两个表都通过终端显示,
显然这段代码没有效果。即使我将阈值设置为 0.0
在这三个语句中,情况是相同的(如果阈值是 0.0
则不会有输出)。
选项 3: 正如 @Myonara 建议的那样,添加 ;
这里:
SELECT P, G, T FROM C_I l1 , C_II l2
WHERE
ABS(l1.P1-l2.P2) < 0.005;
AND
ABS(l1.T1-l2.T2) < 20.0
AND
ABS(l1.G-l2.G2) < 0.005
产生此错误:
Error: incomplete SQL: AND
ABS(l1.T1-l2.T2) < 20.0
AND
ABS(l1.G1-l2.G2) < 0.005
因此,我无法理解的东西不起作用
如果您能帮助我,我将不胜感激。
完整脚本: tables.sql
:
我将其运行为:sqlite3 < tables.sql
:
.headers on
CREATE TABLE C_I("P1" TEXT, "G1" TEXT, "T1" TEXT);
CREATE TABLE C_II("P2" TEXT, "G2" TEXT, "T2" TEXT);
.separator " "
.import './data1.txt' C_I
.import './data2.txt' C_II
select T1 from C_I LIMIT 3;
select P1 from C_I LIMIT 3;
select G1 from C_I LIMIT 3;
DELETE FROM C_I WHERE T1 == '(Gpa)';
DELETE FROM C_I WHERE P1 == '#';
DELETE FROM C_I WHERE G1 == 'P';
DELETE FROM C_II WHERE T2 == '(Gpa)';
DELETE FROM C_II WHERE P2 == '#';
DELETE FROM C_II WHERE G2 == 'P';
select * from C_I LIMIT 3;
select * from C_II LIMIT 3;
SELECT * FROM C_I l1, C_II l2;
WHERE
ABS(l1.P1-l2.P2) < 0.005
AND
ABS(l1.T1-l2.T2) < 20.0
AND
ABS(l1.G1-l2.G2) < 0.005
最佳答案
尝试这个,因为这就是 SELECT 的完整 sql 语法,您需要它:
SELECT P, G, T FROM C_I l1 , C_II l2
WHERE
ABS(l1.P-l2.P) < 0.005
AND
ABS(l1.T-l2.T) < 20.0
AND
ABS(l1.G-l2.G) < 0.005;
关于jquery - 两个表中三列的值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45536652/