2016-11-22 17 views
1

を値に等しく存在しないすべての行またはフィールドを選択します。MySQLの - 私は2つのテーブル持っ

G1:

id | name | 
1 | G1 | 
2 | G2 | 
3 | G3 | 
4 | G4 | 
5 | G5 | 

g_u_groups:私が持っている

id | group_id | action | 
1 | 2  | view | 
2 | 3  | add | 
3 | 2  | view | 
4 | 3  | view | 
5 | 1  | add | 

を次のクエリの問題:

SELECT * 
FROM g1 
LEFT JOIN g_u_groups ON 
    g_u_groups.group_id = g1.id 
    AND (g_u_groups.action = 'add' OR g_u_groups.id is null) 
ORDER BY g_u_groups.id DESC 
LIMIT 10 

これで、g_u_groupsに行を持つグループだけが選択されます。

すべてのグループを最新の'add'アクションで注文したいと思いますが、を持たないgroupsも選択します。

期待される結果:

id | name | 
1 | G1 | 
3 | G3 | 
2 | G2 | 
4 | G4 | 
5 | G5 | 
+0

サンプルデータであなたの質問に手の込んだ期待される結果。 – Viki888

+0

@ Viki888ここをクリック –

+0

期待した結果を追加してください – scaisEdge

答えて

0

が、これは予想を返していますか?

SELECT g1.id, g1.name 
    FROM g1 
    LEFT JOIN g_u_groups 
    ON g_u_groups.group_id = g1.id 
     AND g_u_groups.action = 'add' or g_u_groups.id is null 
    ORDER BY g_u_groups.id DESC, g1.id DESC 
    LIMIT 10 

複数の列の並べ替えについては、このPOST話、それはここであなたに

+0

の予想結果を確認してください。ただし、どこの条件を削除してもすべての結果が表示されるのは私の唯一の問題はグループの順番です。 –

+1

自分の投稿を編集しました。投稿内の複数の列の並べ替えのリンクを確認してください – AndreL

0

を助けることができるにも行動せずにアイテムを示す最新の追加アクションで返すSQLです:

SELECT * 
FROM g1 
LEFT JOIN g_u_groups ON 
g_u_groups.group_id = g1.id 
where (g_u_groups.action = 'add' OR g_u_groups.id is null) 
ORDER BY g_u_groups.id DESC 
LIMIT 10; 
関連する問題