2016-05-10 12 views
0

Ich habe eine Liste von IDs, die ich durch die Abfrage unten durchlaufen möchten. Daher möchte ich, dass die Abfrage für jede ID ausgeführt wird und dass ID_FROM_LIST die nächste ID aus LIST_OF_IDS herausholt.MYSQL Loop Variable innerhalb Abfrage

Liste:

LIST_OF_IDS = (379, 517, 519, 797, 800, 896, 897, 900, 902, 903, 904, 905, 906, 907, 919) 

Abfrage:

select w.Record_Count, w.Distinct_Provider_Count from 
(select c as Record_Count, dc as Distinct_Provider_Count 
from 
(select * from centene_cic_decodes where standard_use in ('','P','PL')) r left join 
(
select 
deceased_status as t, count(*) as c , count(distinct group_key) as dc, 'provider_status' as cat 
from t_conditioncodes_0086252_cen_idvf2 
where NET_ID_ef = ID_FROM_LIST 
group by 1 
union all 
select 
name_status as t, count(*) as c , count(distinct group_key) as dc, 'name_status' as cat 
from t_conditioncodes_0086252_cen_idvf2 
where NET_ID_ef = ID_FROM_LIST 
group by 1 
) z 
on (if((z.t is null or z.t = ''), 'BLANK',z.t)) = r.Status_Codes and z.cat = r.Category 
order by r.category_rank, r.rank)w ; 

Das Ziel ist, einen separaten Ausgang für jede ID zu erstellen. So ein Bericht für 379 dann ein separates für 517 etc ...

(Dies ist nur ein Ausschnitt aus der vollständigen Abfrage und die Liste der IDs der Einfachheit halber.)

+0

Sie haben, ohne die Auswahl zu Schließen ... und was machen Sie Männer Schleifenvariable Innenabfrage ... sql qhery haben Schleife nicht ... schließlich plsql haben Schleife .. erklären Sie besser Ihr Ziel .. und überprüfen Sie für Ihren Code. – scaisEdge

+0

Ich bedeute, habe die Abfrage, die vorbei laufen lassen und die ne ersetzen xt ID jedes Mal. – user3670277

Antwort

0

Wenn alle IDs der LIST_OF_IDS referenziert in eine Tabelle, können Sie eine Schleife über eine durch Kommata getrennte Liste (ex: „1,2,3“) mit FIND_IN_SET wie folgt aus:

select t.id id_from_list 
from mytable t 
where find_in_set(t.id, LIST_OF_IDS); 
Verwandte Themen