1

SQL クエリを作成する必要がある

任意の 2 を取得するEmpCodeEmpGroupcity = del

  • EmpCodeユニークです
  • 1人は1EmpCode人しか持てないEmpGroup
  • 1EmpGroup個で複数持てるEmpCodes

:EMP_CITY

EmpCode  EmpGroup   City
1         A          del
2         A          del
3         B          del
4         B          del
5         C          del
6         C          del
7         A          ban
8         A          del

出力

EmpGroup: A
    1
    2
EmpGroup: B
    3
    4
EmpGroup: C
    5
    6
4

4 に答える 4

1

このクエリを試してください

SET @level = 0;
SET @group = '';

SELECT 
EmpCode,EGroup
FROM (
    SELECT 
        City,
        EmpCode,
        EmpGroup,
        @level := IF(@group = EmpGroup, @level+1, 1) AS level, 
        @group := EmpGroup as EGroup 
    FROM test
    ORDER BY EmpGroup 
) rs
WHERE level < 3 

出力

EMPCODE     EGROUP
1           A
2           A
3           B
4           B
5           C
6           C

これがsqlfiddleデモです

于 2013-01-02T09:11:42.627 に答える
0

これを見てください:

SELECT EmpGroup, EmpCode
FROM EMP_CITY a
WHERE EmpCode <= (
  SELECT EmpCode
  FROM Emp_CITY b
  WHERE EmpGroup = a.EmpGroup
  LIMIT 1, 1
)

EmpGroupで行番号2のEmpCodeグループを取得しようとします。WHEREEmpGroup=a.EmpGroup次に、EmpCodeがサブクエリで取得した行番号以下の場所を選択します。

于 2013-01-02T09:26:17.603 に答える
0

利用可能な場合はトップを使用

SELECT TOP 2 EMPCODE FROM EMPLIST WHERE EMPGROUP=A

利用できない場合は、これを試してください

SELECT EMPCODE FROM EMPLIST WHERE EMPGROUP=A LIMIT 2

オラクルの場合、これを試してください

SELECT EMPCODE FROM EMPLIST WHERE EMPGROUP=A and ROWNUM<3
于 2013-01-02T09:11:50.683 に答える
0
  1. 結果セット全体を取得してから、各 emp グループから 2 つの結果を出力する必要があります。

    select EmpCode, EmpGroup, City
      from EMP_CITY
     ORDER BY EmpGroup
    
  2. アプリで EmpGroup を取得できます。次に、Emp グループごとに個別のクエリを実行します。これは、各従業員グループに多数の従業員がいる場合にのみ、#1 よりも高速になります。個々のクエリの余分なオーバーヘッドは、返される行全体の数が少ないことによって打ち消されます。

    select DISTINCT EmpGroup
      from EMP_CITY
     ORDER BY EmpGroup
    
    select EmpCode, City
      from EMP_CITY
     where EmpGroup = ? limit 2
    

    ?さまざまな従業員グループであること

于 2013-01-02T08:49:30.700 に答える