0

私はテーブルを持っています

id = 1
name = 'one'
group = 1

id = 2
name = 'two'
group = 1

id = 3
name = 'three'
group = 2

そして、1 つの SQL クエリで単一のすべての名前を取得する必要があります。この場合は id = 3 であり、別の SQL では倍数であるすべての名前を取得する必要があります。選択中の選択である必要があると思いますが、わかりません。

前もって感謝します。

4

1 に答える 1

2

次のようなものを使用したいようです。

select id
from yourtable
group by `group`
having count(`group`) = 1

SQL FiddlewithDemoを参照してください。

次に、すべての詳細を返したい場合は、クエリを次のように展開できます。

select *
from yourtable t1
where id in (select id
            from yourtable t2
            group by `group`
            having count(`group`) = 1)

SQL FiddlewithDemoを参照してください。

同じグループを持つすべての行を返す場合は、次を使用できます。

select *
from yourtable t1
where `group` in (select `group`
                  from yourtable t2
                  group by `group`
                  having count(`group`) > 1)

SQL FiddlewithDemoを参照してください

次に、すべてと、それが単一か複数かを識別するフラグを返したい場合は、これに似たものを使用できます。groups1つの行があるものと、複数の行があるグループを示すフラグが含まれていることに気付くでしょう。

select *, 'single' Total
from yourtable t1
where `group` in (select `group`
                  from yourtable t2
                  group by `group`
                  having count(`group`) = 1)
union all
select *, 'multiple' Total
from yourtable t1
where `group` in (select `group`
                  from yourtable t2
                  group by `group`
                  having count(`group`) > 1)

SQL FiddlewithDemoを参照してください

于 2013-02-21T14:11:36.640 に答える