-1

以下の表では、 is_logged_inフラグに 0 と 1 の両方が含まれているすべてのuser_idを示します。

__________________________
| user_id | is_logged_in |
+------------------------+
|    A    |      1       |
+------------------------+
|    B    |      1       |
+------------------------+
|    B    |      0       |
+------------------------+
|    C    |      0       |
+------------------------+
|    D    |      0       |
+------------------------+
|    D    |      1       |
+------------------------+
|    C    |      0       |
+------------------------+

GROUP BY 条件なしで実行できますか? 可能であれば、GROUP BY を使用せずにクエリを実行する方法も教えてください。ありがとうございます。

クエリ後の結果:

___________
| user_id |
+---------+
|    B    |
+---------+
|    D    |
+---------+
4

3 に答える 3

2

実装しようとしているロジックは何ですか? B と D を返したいのに、A と C を返したくないのはなぜですか?

質問が「フラグuser_idに 0 と 1 の両方が含まれているものをすべて表示する」である場合is_logged_in

select user_id
  from table_name
 group by user_id
having count( distinct is_logged_in ) = 2

また

select user_id
  from table_name
 where is_logged_in = 0
intersect
select user_id
  from table_name
 where is_logged_in = 1

また

select a.user_id
  from table_name a,
       table_name b
 where a.rowid != b.rowid
   and a.user_id = b.user_id
   and a.is_logged_in = 0
   and b.is_logged_in = 1
于 2013-07-02T07:20:28.847 に答える
0
select distinct user_id
from table_name a 
inner join table_name b on a.user_id = b user_id
where a.is_logged_in <> b.is_logged_in
于 2013-07-02T07:18:55.200 に答える
0
SELECT *
FROM table
WHERE (user_id = 'B' or user_id = 'D')
于 2013-07-02T07:17:13.093 に答える