私のmysqlデータベースにこのテーブルがあります
+-----+----------+------+----------+
| id | group_id | a_id | status |
+-----+----------+------+----------+
| 2 | 144 | 266 | active |
| 7 | 160 | 105 | inactive |
| 8 | 0 | 262 | inactive |
| 11 | 120 | 260 | inactive |
| 12 | 120 | 260 | inactive |
| 13 | 121 | 260 | active |
| 14 | 122 | 258 | active |
| 14 | 122 | 258 | inactive |
| 16 | 130 | 210 | active |
| 17 | 130 | 210 | active |
+-----+----------+------+----------+
同じグループ (group_id) 内のすべてのステータスが非アクティブで、0 以外である必要があるように、a_id を選択する必要があります。実際に取得したいのは、このテーブルからの ID (105,260) の配列です。
私はこのSQLに来ましたが、明らかに正しく動作していません:
select a_id from tab_name where group_id<>0 and group_id in
(select group_id from tab_name where status="inactive"
group by group_id having status="inactive")