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

sql個別、2列を取得

    両方の列を結合してから、個別の値をフィルタリングする必要があります:

    select distinct T.from_to from
    ( select `from` as from_to
      from messages
      union
      select `to` as from_to
      from messages
    ) T
    

    本当にすべてをコンマ区切りの文字列で囲む必要がある場合は、 GROUP_CONCAT([DISTINCT] 集計関数。

    編集済み

    あなたは解決策としてジェラルドの答えをマークする必要があります。ユニオンオペレーターをテストし、mysqlユニオンオペレーターのドキュメント を読み直した後 、デフォルトでは、個別の値に対するmysqlフィルター:

    mysql> create table ta( a int );
    Query OK, 0 rows affected (0.05 sec)
    
    mysql> insert into ta values (1),(1),(2);
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> select * from ta
        -> union
        -> select * from ta;
    +------+
    | a    |
    +------+
    |    1 |
    |    2 |
    +------+
    2 rows in set (0.00 sec)
    

    次に、最終クエリ は:

      select `from` as from_to
      from messages
      union distinct
      select `to` as from_to
      from messages
    

    distinctに注意してください 必須ではありません。

    カンマ区切り文字列が必要な場合にのみ、最初の解決策が必要です:

    select distinct GROUP_CONCAT( distinct T.from_to from )
    ( select `from` as from_to
      from messages
      union
      select `to` as from_to
      from messages
    ) T
    


    1. Laravelクエリビルダー-エイリアスでグループ化する方法、または生のgroupByを実行する方法

    2. nodejsでmysqlスキーマを作成する方法

    3. Tanh()がPostgreSQLでどのように機能するか

    4. 日付間のLaravel$q-> where()