2012-01-08 74 views
0

我想在語句寫入mysql時,我無法做到這一點。我想比較localParty loc,如果它們的值是相等的,那麼我想從loc_m列中檢索信息(this列是從表「o」),如果不等於然後從localParty列(從「數據」表)與查詢時語句比較的mysql查詢

請幫助如何寫這個腳本在MySQL查詢?由於

這個腳本

select (case when data.localparty = o.loc then o.loc_m else data.localparty end) 
    as customdata from data, o 

這是工作,但它缺少恰好有三個結果(我的意思是再data.localparty等於o.loca它是從data.localparty給出結果3次後這一次它是從loc_m給予結果,它會像這樣

回答

1

你可以米odify查詢以下列方式:

SELECT IF(t1.Column1 = t2.Column2,t2.Column1,t1.Column3) FROM TABLE1 AS t1, Table2 AS t2 
+0

多數民衆贊成多謝理解,謝謝,但它將如何與時聲明,因爲如果不是每個給定的價值返回像它一定是,因爲我檢索很多,我認爲,因爲它缺少一些結果與IF語句 – DaHaKa 2012-01-08 10:51:14

+0

說換句話說,這個腳本可以正常工作但缺少3個值(我的意思是,當column1等於column2時,它從column1中檢索數據3次),爲什麼? – DaHaKa 2012-01-08 11:11:32

0

您應該使用control-flow functions來實現這一目標:

SELECT IF(Column1 = Column2,Column1,Column3) FROM TABLE1 
+0

但列1和列2,欄3是從差異表,以及如何指定這個語法,我不能猜到它 – DaHaKa 2012-01-08 10:24:24

+0

可以說,column1來自table2的table1和(column2和column3)。如何用這個表寫標記的腳本? – DaHaKa 2012-01-08 10:27:32

1

試試這個:

select (case when data.localparty = o.loc then o.loc_m else data.localparty end) 
as customdata from data, o 
+0

whats customdata在此代碼中的含義是什麼? – DaHaKa 2012-01-08 10:53:34

+0

這只是計算列或列別名的名稱。 – Rahul 2012-01-08 10:59:42

+0

我有非常有趣的情況,這個腳本只與一些數據一起工作,因爲它缺少了一些結果。我正在用這個腳本檢索數據,當它等於o.loc時它也從localparty檢索數據,爲什麼? – DaHaKa 2012-01-08 11:03:57

1

你可以用下面的查詢

Select O.loc_m as local 
from Data 
inner join on O on data.localparty=O.loc 
UNION 
Select data.loacalparty as local 
from Data 
where data.localparty is not in (select loc from O)