0

グループごとに 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

ありがとう

4

5 に答える 5

7

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;

デモを見る

于 2013-07-12T18:48:59.183 に答える
1

タイプごとに特定のレコードを選択し、結合して残りのフィールドを次のように取得する必要があります。

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 がそれらのフィールドを取得するためにどの行を選択するかは未定義です。

于 2013-07-12T19:06:31.757 に答える
0

これを試しましたか?

SELECT * FROM employee GROUP BY group;
于 2013-07-12T18:48:59.087 に答える
-1
Select * from Employee
Group by Type
于 2013-07-12T18:48:50.923 に答える