2012-05-06 172 views
1

我已將大型CSV文件導入到表中。該表的樣品看起來像這樣用於比較列值的表的行比較的SQL查詢

name,  eye,point,field,date,seconds,sensitivity*10,slope,intercept,T*1000 

NESSA SONIA ,R,6,4,08-04-09,32658845,160,1.062300e+001,62538, 1282 
NESSA SONIA ,R,6,5,20-05-09,36288632,20, 5.360101e+000,64036, 771 
NESSA SONIA ,R,6,6,02-12-09,53223062,60, 3.425260e+000,64590, 767 
NESSA SONIA ,L,6,4,08-04-09,32658922,230,4.629489e+000,64382, 582 
NESSA SONIA ,L,6,5,20-05-09,36288515,170,2.805373e+000,64901, 511 
NESSA SONIA ,L,6,6,02-12-09,53223059,220,3.528252e+000,64694, 1022 

我要比較右眼和左眼「靈敏度* 10」的價值觀,以匹配點和字段值,並提取最高(我指的是行)。

例如,我必須比較第一行和第四作爲點,字段和日期相同,並提取第四個靈敏度最高。我有一個巨大的文件,需要提取所有值。任何人都可以幫助與SQL查詢,將不勝感激。

+0

我已經分居左,右擊t眼睛分爲兩個表格l和表格r,然後得到的值不爲空(從'表格'中選擇'表格1'。*' 其中'表格1'。 '靈敏度* 10'> 10) 工會 (選擇'表r'。*從'表r' 其中'表r'。'靈敏度* 10'> 10),但是在這之後,如果我比較和使用提取的字段加入,它給我笛卡爾產品 – user1375481

回答

1
(select `table l`.* from `table l`, `table r` 
where `table l`. `sensitivity*10` > 10 and `table l`.`sensitivity*10`>`table r`.`sensitivity*10`) 

union 

(select `table r`.* from `table r`, `table l` 
where `table r`. `sensitivity*10` > 10 and `table r`.`sensitivity*10`>`table l`.`sensitivity*10`) 
+0

我分成左右兩個表,並使用此查詢..計算出來..謝謝蒂姆彼得森。和bluefeet – user1375481

0

您需要使用SQL MAX()功能和GROUP BY名。

嘗試這樣:

SELECT * 
FROM (
    SELECT point, field, MAX(sensitivty*10) AS max 
    FROM table 
    GROUP BY 
      name 
    ) tbl 
JOIN table 
ON  table.point = tbl.field 

而且,看看這個其他#1 Q &一個具有查詢類同一個你感興趣的是:SQL Group by & Max

+0

對不起,它沒有工作,它給了我有點和場相同的單行。但我需要比較左眼和右眼(敏感度值),其中點字段和日期相同。觀察圖像中的第1行和第4行 – user1375481

+0

仍然查詢顯示具有相同點和字段的行,但它不與其他行進行比較 – user1375481

+0

是的,'MAX()'獲得整體'max'。這就是爲什麼只有一行返回。我仍然試圖找出如何爲每個人獲得最大值。很確定'MAX(sensitivty * 10)'需要移動到別的地方,也許在子查詢中。我試圖但不是最好的在SQL,對不起... –

0

我想這應該工作你:

select if(t1.sensitivity*10 > t2.sensitivity*10,t1.sensitivity*10,t2.sensitivity*10) as col1 
from table t1 
inner join table t2 
    on t1.field = t2.field 
    and t1.point = t2.point 
    and t1.date = t2.date 
where t1.eye ='R' and t2.eye ='L' 
+0

沒有工作。它給我NULL行 – user1375481

+0

@bluefeet我猜查詢不是很正確,我沒有看到你的查詢在哪裏'field = point'。你能建議嗎?謝謝 –

+0

如果R和L的眼睛在他們自己的表中,那麼如何擺脫'WHERE'子句? –