복붙노트

[SQL] SELECT COUNT (*);

SQL

SELECT COUNT (*);

나는 두 개의 테이블 (표 1, 표 2)와 데이터베이스, database1을 보유하고 있습니다.

표 1에서 3 행과 표 2에서 2 개 행이 있습니다. 지금은 다음과 같은 SQL은 COUNT (*)를 선택 쿼리 실행하면, database1에서, 출력은 "1"이다.

합니까 누구는 아이디어, 어떤이 "1"의미를 가지고?

두 테이블의 정의는 다음과 같다.

CREATE TABLE Table1
(
ID INT PRIMARY KEY,
NAME NVARCHAR(20)
)

CREATE TABLE Table2
(
ID INT PRIMARY KEY,
NAME NVARCHAR(20)
)

해결법

  1. ==============================

    1.일반적으로 모든 선택은 FROM [컬럼에 컬럼 열에 스칼라 연산 그룹화 계산 또는 스칼라 연산] 형태의 SELECT들은 [테이블 또는 테이블 등 조인]

    일반적으로 모든 선택은 FROM [컬럼에 컬럼 열에 스칼라 연산 그룹화 계산 또는 스칼라 연산] 형태의 SELECT들은 [테이블 또는 테이블 등 조인]

    이 일반 스칼라 계산을 할 수 있기 때문에 우리는 SomeTable에서 선택 1과 같이 + 1을 할 수 있으며 테이블 SomeTable의 모든 행에 대한 값 2 레코드를 반환합니다.

    이제, 우리는 모든 테이블에 대해 상관하지 않은 경우, 그러나 우리의 스칼라는 우리가 SELECT 1 + 1이이 표준에 의해 허용되지 않습니다 같은 것을 수행 할 수 있습니다 계산하고 싶어하지만, 유용하고 대부분의 데이터베이스는 그것을 허용 (가, 최근에 변경된 적어도 그것은에 사용하지 않는 오라클은하지 않습니다).

    따라서 이러한 노출에 select 그들이 하나의 행없고 열이있는 테이블을 지정한에서 절 한 것처럼 처리 (물론 불가능하지만 트릭을 수행)하고 있습니다. 따라서, 1 + 1 + 1 1 2 값을 가진 단일 컬럼 단일 행을 반환 ImaginaryTableWithOneRow 화상에서 선택하게 선택한다.

    우리가 주로 우리는 단지 노출에 select 결과를주고, 심지어 하나 개의 행을 반환하는 선택 어떤 하나 열 일이 있어야한다는 사실에 대해 생각하지 않는다는 사실에 익숙해 이것에 대해 생각하지 않습니다.

    SELECT COUNT을함으로써 (*) 당신은 어떤 과정을 반환 하나의 ImaginaryTableWithOneRow에서 선택의 COUNT (*)에 해당했다.

  2. ==============================

    2.비슷한 맥락에서 다음이 또한 결과를 반환합니다.

    비슷한 맥락에서 다음이 또한 결과를 반환합니다.

    SELECT 'test'
    WHERE  EXISTS (SELECT *)  
    

    (이 연결 항목에서) 그 동작에 대한 설명은 또한 귀하의 질문에 적용됩니다.

  3. ==============================

    3.테이블을 지정하지 않고 SELECT COUNT (*)를 실행 한 때문이다.

    테이블을 지정하지 않고 SELECT COUNT (*)를 실행 한 때문이다.

    카운트 함수는 지정된 데이터 세트의 행 수를 반환합니다. 따라서 COUNT (*) Oracle과 같은 SQL의 일부 버전에서는 테이블을 지정하거나 (1을 반환합니다 - 당신이 선택할 수있는 테이블을 지정하지 않은 경우, 하나의 선택은 오직 하나의 행을 반환합니다 유사한 데이터베이스 객체, 오라클 특정 테이블이 요구되지 않을 때 선택 될 수있다 (DUAL 불림) 더미 테이블을 포함한다).

  4. ==============================

    4.당신은 일반적으로에 대한 쿼리에 테이블을 지정하지 않고 SELECT COUNT (*)를 실행하지 않을 것입니다. 데이터베이스 서버는 아마 당신이 조회되는 기본 시스템 테이블을 기반으로 "1"의 수를주고있다.

    당신은 일반적으로에 대한 쿼리에 테이블을 지정하지 않고 SELECT COUNT (*)를 실행하지 않을 것입니다. 데이터베이스 서버는 아마 당신이 조회되는 기본 시스템 테이블을 기반으로 "1"의 수를주고있다.

    사용해보십시오

    select count(*) from Table1
    

    테이블 이름이 없이는 이해되지 않는다.

  5. ==============================

    5.테이블 이름없이 항상 1이 있는지 데이터베이스를 반환 ....

    테이블 이름없이 항상 1이 있는지 데이터베이스를 반환 ....

  6. ==============================

    6.이 태그 SQL 서버이기 때문에, MSDN은 말한다.

    이 태그 SQL 서버이기 때문에, MSDN은 말한다.

    또한,

    따라서, 기본 (가정)에서 COUNT를 할 수있는 테이블을 제공하지 않았으므로이 1을 반환한다는 것입니다.

  7. ==============================

    7.COUNT 함수는 결과 행의 수를 반환합니다. 당신이 어떤 테이블을 지정하지 않으면 기본적으로 1을 반환합니다. 즉., COUNT (*), COUNT (1), COUNT (2), ... 항상 1을 반환합니다.

    COUNT 함수는 결과 행의 수를 반환합니다. 당신이 어떤 테이블을 지정하지 않으면 기본적으로 1을 반환합니다. 즉., COUNT (*), COUNT (1), COUNT (2), ... 항상 1을 반환합니다.

  8. ==============================

    8.

    Select * 
    

    당신은 아무것도를 필터링하지 이후 절에서 "이 우주에서 모두 선택"입니다없이. 귀하의 경우에는, 당신은 "얼마나 많은 우주를?"묻는 이것은 내가 가르쳐 얼마나 정확하게이다. 나는 첫날에 보드에 작성합니다, * 선택하고 무엇을 의미하는지 묻는다. 답변 : 저에게 세계를주십시오. 그리고 거기에서 나는 의미있는까지 우주를 필터링하는 방법을 가르 칠 것입니다.

    나는 내가 더 재미있게 만들하지만 여전히 다시 진정한 해답을 제공 할 선택 카운트 (*), 생각하지 인정해야합니다. 우리는 하나의 세계가있다. 스티븐 호킹을 묻지 않고, SQL은 1 맞설해야합니다.

    쿼리의 결과는 정확합니다.

  9. from https://stackoverflow.com/questions/8398772/select-count by cc-by-sa and MIT license