sql >> データベース >  >> RDS >> Mysql

MySQLの作成関数はセットを返しません

    MySQL関数は、MySQLの行または行のセットを返さない場合があります。ストアドプロシージャのみが行を返すことができます。これは、MySQL5.4までに当てはまります。 制限 を参照してください。 ページ。テーブルとしてのストアドプロシージャの使用、またはクエリでのwhere句の値も使用できません。

    関数を使用する必要がある場合にできる最善の方法は、GROUP_CONCATを使用して、値をコンマ区切りのリストに入れることです。

    CREATE FUNCTION getuids() RETURNS VARCHAR(1024)
    BEGIN
    SELECT GROUP_CONCAT(uid SEPARATOR ',') INTO @uid_list FROM pages WHERE deleted = 0;
    RETURN @uid_list;
    END
    

    次に、uidをチェックする必要があるselectステートメントで、次のようにFIND_IN_SET関数を使用できます。

    SELECT ... WHERE FIND_IN_SET(my_field, get_uids());
    

    P.S.私はもともとMySQLWebサイトにGROUP_CONCAT関数とFIND_IN_SET関数へのリンクを投稿していましたが、StackOverflowでは1つのリンクしか使用できませんでした。新しくてよかった。




    1. PHPフォームがファイルをアップロードしていません

    2. OFFSET / FETCHによるページネーション:より良い方法

    3. 15パズルのパターンデータベース(5-5-5)を作成するための実用的なソリューションが必要

    4. クエリが事前にわからない、複数のmysqlコマンドライン呼び出しに対してパスワードを1回入力できますか?