2012-01-08 3 views
0

Я хочу написать инструкцию mysql when, и я не могу этого сделать.mysql query with when statement

описание => localParty - столбец в таблице «данные», loc - столбец из таблицы «o», и я хочу сравнить localParty с loc, если их значения равны, тогда я хочу получить информацию из столбца loc_m (это столбец из таблицы «o»), а если не равен, то из столбца localParty (из таблицы «данные»)

Пожалуйста, помогите, как написать этот скрипт в запросе 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

thats хорошо понимают, спасибо, но как бы это было с оператором when, потому что если бы не каждое значение возвращалось так, как должно быть, потому что я извлекаю много, и я думаю, из-за этого отсутствует некоторый результат с оператором IF – DaHaKa

+0

, чтобы сказать другими словами, этот скрипт работает, но отсутствует ровно 3 значения (я имею в виду, что он извлекает данные из столбца 1 3 раза соответственно, когда столбец1 равен столбцу2) и почему? – DaHaKa

0

Вы должны использовать control-flow functions для достижения этой цели:.

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

но COLUMN1 и COLUMN2, колонка3 взяты из дифф таблиц, и как указать этот синтаксис, я не могу догадаться, – DaHaKa

+0

позволяет сказать, что column1 из таблицы1 и (column2 и column3) из таблицы2. как писать отмеченные скрипты с этими таблицами? – DaHaKa

1

Попробуйте:

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

Что такое customdata в этом коде? – DaHaKa

+0

Это просто имя для вычисленного столбца ИЛИ псевдоним столбца. – Rahul

+0

У меня очень интересная ситуация, эти скрипты работают только с некоторыми данными, потому что этого не хватает. Я извлекаю данные с этим скриптом, и он извлекает данные из localparty, когда он равен o.loc и почему? – DaHaKa

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)