2014-02-22 48 views
0

我想要做的是從interv中選擇一些行,interv.Ordeds中的第一個單詞等於drugs.Products中的第一個單詞。如果這是真的,我想更新interv.Generic與drugs.Generic的值(但我沒有得到那麼多之前得到一個錯誤),這是我得到多遠,請幫助,如果你可以:如何找到與另一個表中另一行的第一個單詞匹配的行?

select * from 
interv 
left outer join drugs on ((SELECT SUBSTRING_INDEX(`OrderS` , ' ', 1) 
FROM `interv`) = (SELECT SUBSTRING_INDEX(`ProductD` , ' ', 1) FROM `drugs`)) 

當我這樣做,我得到錯誤: 錯誤代碼:1242子查詢返回多個1行

附註:我也滿足於interv.Orders具有一定量的字符等於一定數目的字符在drugs.Products,但我不知道如何用類似的聲明來完成這一點。

回答

0

您只需通過on子句中使用substring_index()做到這一點:

select * 
from interv i left outer join 
    drugs d 
    on substring_index(Orders, ' ', 1) = substring_index(ProductD, ' ', 1); 

如果你想這樣做,在update查詢:

update interv i join 
     drugs d 
     on substring_index(Orders, ' ', 1) = substring_index(ProductD, ' ', 1) 
    set i.Generic = d.Generic; 

編輯:

你有每個表格中多個相同的第一個單詞。您可以通過執行看到這些:

select substring_index(Orders, ' ', 1) as word, count(*) as cnt 
from drugs 
group by substring_index(Orders, ' ', 1) 
having cnt > 1 
order by cnt desc, word; 

,然後在另一臺類似的查詢。

+0

我試過這個,但出了2771行數據庫返回29000結果,所以即時猜測有重複,任何想法爲什麼? – user3341944

相關問題