1

CONCAT() 関数を使用しているため、動的クエリを実行しようとしています。しかし、私の文字列/クエリは長いので、CONCAT() は機能していないと思います。

set @query:=CONCAT(' SELECT (select GROUP_CONCAT(sp.specialization) FROM DSpecialization_Master dsp LEFT JOIN 
Specialization_Master sp on sp.id = dsp.specialization WHERE dsp.profileid in (', @MultiDoctorIds ,') 
) as drspec,pm.id as profileid,dam.city,um.profile_url FROM Profile_Master pm LEFT JOIN DAddress_Master dam on 
dam.profileid = pm.id join Unique_Url_Master um on um.clinicid =dam.id WHERE pm.id in (',@MultiDoctorIds,') 
and dam.id=',@clinicId,'  order by CASE WHEN um.clinic_url=''',@ClinicUrl,''' THEN 1 ELSE 2  end,um.clinic_url   ');

select @query;

これはストア プロシージャの一部で、SP を実行すると@query NULLが表示されますが、クエリを短くすると完全なクエリが得られます。

連結する別の方法はありますか??

助けていただければ幸いです。

4

3 に答える 3

1

これのAは、以下の.likeの代わりにtemporary solutionあなたdynamic queryを保存することですlocal variablesessional variablemaximum length

Declare temp_query varchar(4000);

set @query:=CONCAT(' SELECT (select GROUP_CONCAT(sp.specialization) FROM DSpecialization_Master dsp LEFT JOIN 
Specialization_Master sp on sp.id = dsp.specialization WHERE dsp.profileid in (', @MultiDoctorIds ,') 
) as drspec,pm.id as profileid,dam.city,um.profile_url FROM Profile_Master pm LEFT JOIN DAddress_Master dam on 
dam.profileid = pm.id join Unique_Url_Master um on um.clinicid =dam.id WHERE pm.id in (',@MultiDoctorIds,') 
and dam.id=',@clinicId,'  order by CASE WHEN um.clinic_url=''',@ClinicUrl,''' THEN 1 ELSE 2  end,um.clinic_url   ');

select @query into temp_query;
select temp_query;
于 2016-04-07T11:43:37.007 に答える
0

私は別の解決策を得ました:

GROUP_CONCAT最大長は、(1024 by default)問題を解決する以下のようにセッションスコープの長さを変更する必要がある制限です

  SET SESSION group_concat_max_len = 25000 ;
于 2016-04-09T09:34:44.643 に答える
0

次のような変数を設定できます

SET @var := hello hello

あなたはそれを引用しなければなりません

MariaDB [(none)]> set @var = hello hello;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'hello' at line 1
MariaDB [(none)]> set @var = "hello hello";
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> select @var;
+-------------+
| @var        |
+-------------+
| hello hello |
+-------------+
1 row in set (0.00 sec)

MariaDB [(none)]>
于 2016-04-07T11:45:04.327 に答える