커서에 대한 데이터를 제공하는 SQL 쿼리에서이를 수행 할 수 있습니다.
person(name varchar)
테이블이 있다고 가정합니다. 대신 그냥 물어의
:
SELECT name FROM person ORDER BY name;
한 캔 쿼리 : (이름, isFirst)는 결과 집합을 제공
SELECT p.name, CASE(
SELECT COUNT(*)
FROM person
WHERE name<p.name and SUBSTR(name, 1, 1)=SUBSTR(p.name,1 , 1)
) WHEN 0 THEN 1 ELSE 0 END isFirst
FROM person p
ORDER BY name;
- 각 항목 isFirst가 1로 설정해야합니다 "새로운"문자로 시작 새 그룹의 시작을 나타냅니다.
편집 : 예 :
CREATE TABLE person(name varchar);
INSERT INTO person SELECT 'Jim' UNION SELECT 'Tom' UNION SELECT 'Ben' UNION SELECT 'John' UNION SELECT 'Alice' UNION SELECT 'Chris' UNION SELECT 'Anna' UNION SELECT 'Jerry';
SELECT p.name, CASE(
SELECT COUNT(*)
FROM person
WHERE name<p.name and SUBSTR(name, 1, 1)=SUBSTR(p.name,1 , 1)
) WHEN 0 THEN 1 ELSE 0 END isFirst
FROM person p
ORDER BY name;
을 제공합니다
Alice|1
Anna|0
Ben|1
Chris|1
Jerry|1
Jim|0
John|0
Tom|1
좋은 생각하지만 샘플은 작동하지 않습니다. 하위 문자열 (이름)과 하위 문자열 (이름)은 항상 동일합니다 – Janusz
작동하지 않습니까? 예제와 결과를보세요 ... – Gawcio
예를 들어 주셔서 감사합니다. 이제 끝내고 사람 p를 간과했습니다. – Janusz