グループごとに 1 つの行またはレコードを返すクエリを作成する必要があります。たとえば、列を持つテーブル「employee」があります。
id, name, type
1, John, full-time
2, Mike, full-time
3, Alex, part-time
4, Jerry, part-time
次のようなものを返す必要があります
1, John, full-time
4, Alex, part-time
ありがとう
GROUP BY を使用して集計関数を適用する必要があります。
select min(id) id,
min(name) name,
type
from yourtable
group by type;
SQL Fiddle with Demoを参照してください。
上記は、タイプごとに返される id/name を気にしない場合に機能します。その場合は、次を使用できます。
select t1.id,
t1.name,
t1.type
from yourtable t1
inner join
(
select min(id) id, type
from yourtable
group by type
) t2
on t1.id = t2.id
and t1.type = t2.type
また
select t1.id,
t1.name,
t1.type
from yourtable t1
inner join
(
select min(name) name, type
from yourtable
group by type
) t2
on t1.name = t2.name
and t1.type = t2.type;
デモを見る
タイプごとに特定のレコードを選択し、結合して残りのフィールドを次のように取得する必要があります。
SELECT a.id, a.name, a.type
FROM employee a
INNER JOIN
(
SELECT type, MIN(id) AS id
FROM employee
GROUP BY type
) Sub1
ON a.id = Sub1.id
AND a.type = Sub1.type
次のようなことができますが
SELECT a.id, a.name, a.type
FROM employee a
GROUP BY type
これには副作用があります。ID と名前が由来する行は行ではない可能性があり (現在はおそらくそうなります)、MySQL がそれらのフィールドを取得するためにどの行を選択するかは未定義です。
これを試しましたか?
SELECT * FROM employee GROUP BY group;
Select * from Employee
Group by Type