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

MySQLJOIN-左側のテーブルに重複する結果がある場合はNULLを返します

    値は次のように置き換えることができます:

    select 
      case when rownum = 1 then title else null end title,
      name,
      category_id
    from
    (
      SELECT c.title, 
        i.name, 
        i.category_id,
        @row:=(case when @prev=title and @precat=category_id 
               then @row else 0 end) + 1 as rownum,
        @prev:=title ptitle,
        @precat:=category_id pcat
      FROM items AS i
      INNER JOIN categories AS c 
        ON c.id = i.category_id
       order by i.category_id, c.title
    ) src
    order by category_id, rownum
    

    SQL Fiddle withDemo を参照してください。

    結果は次のとおりです。

    |  TITLE |   NAME | CATEGORY_ID |
    ---------------------------------
    |    red |  apple |           1 |
    | (null) |    car |           1 |
    | (null) |  paper |           1 |
    | yellow |   lego |           2 |
    | (null) | banana |           2 |
    |   blue |    pen |           3 |
    


    1. SQL-1つのクエリで複数のレコードを更新します

    2. MySQLで列を遅らせるにはどうすればよいですか?

    3. インデックスの使用、一時的な使用、ファイルソートの使用-これを修正する方法は?

    4. データベースミラーリング/Postgresストリーミングレプリケーション