SQL - 从多个表中查询条件

时间:2018-03-25 22:30:19

标签: sql sqlite join

我正在尝试查找column5数据大于column6的时刻。以下命令适用于我在一个表中的结果

SELECT * FROM table1 WHERE column5 > column6;

但我想使用相同的条件column5 > column6查询其他表的返回值,并仍然选择all,因为某些列提供了其他相关信息和引用。例如,像

SELECT * FROM table1, table2 WHERE column5 > column6;

但是我从一个模糊的命名表column5抱怨错误...我将命令转换为类似

的命令
SELECT * FROM table1, table2 WHERE table1.column5 > table1.column6 AND table2.column5 > table2.column6;

上述命令不会产生错误,但查询返回空结果。我也尝试了INNER JOIN命令

SELECT * FROM table1 INNER JOIN table2 ON table1.seconds = table2.seconds AND table1.column5 > table1.column6 AND table2.column5 > table2.column6; 

这会产生与第一个命令类似的结果,但查询会导致table1中来自该运算符的所有行条件在同一行中重复两次,但不会显示table2结果。

还有另一种方法可以达到这个目的吗?我的大多数尝试都没有返回预期的结果。同样,我只是想让我的查询得到多个表WHERE *.column5 > *.column6

的rowid

.sql file of the database pasted on codeshare.io to provide sample-data to this problem

将样本数据放在此处:

Table1:
Column5    
"139062.6"
"115080"
"279718.5"
"106184"
"109483"
"152253"
"159030.3333"
"144092.5"
"154913.8333"
"52166.83333"
"18257.5"
"8907"

Column6
"224340.8"
"154723.6667"
"202486.8333"
"107184.8333"
"110674"
"257038.6667"
"151057"
"190702.6667"
"229714"
"37816.16667"
"18061.83333"
"6606.666667"

Table2:
Column5    
"7544.6"
"10165.16667"
"11574.16667"
"9400.833333"
"11421.5"
"11368.5"
"11925.83333"
"9108.833333"
"8276.666667"
"8650.5"
"14998.16667"
"16229.83333"

Column6
"10109"
"14526.83333"
"12070.66667"
"7819.333333"
"9247.833333"
"7201.833333"
"8166.833333"
"4928"
"9135.5"
"9666.166667"
"8201.166667"
"10186"     

Expected Result "WHERE column5 > column6" on table 1 and 2:

    TABLE 1      
Column5      
"279718.5"   
"159030.3333"
"52166.83333"
"18257.5"    
"8907"       

  Column6     
"202486.8333" 
"151057"      
"37816.16667" 
"18061.83333" 
"6606.666667" 


    TABLE 2 
  Column5        
 "9400.833333"    
 "11421.5"          
 "11368.5"      
"11925.83333"       
 "9108.833333"    
 "14998.16667"      
  "16229.83333"     

Column6

"7819.333333"
"9247.833333"
"7201.833333"
"8166.833333"
"4928"
"8201.166667"
"10186"

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找union运算符(假设您的表具有相同的列数):

SELECT * FROM table1 WHERE column5 > column6 
UNION 
SELECT * FROM table2 WHERE column5 > column6;

如果您只想要列出的rowid,SELECT rowid取而代之(这取决于您以后如何使用查询结果,这样您就无法告诉rowid引用哪个表)。