programing

표에서 1을 선택한다는 것은 무슨 뜻입니까?

yoursource 2022. 12. 31. 18:46
반응형

표에서 1을 선택한다는 것은 무슨 뜻입니까?

다음과 같은 문의가 많이 있었습니다.

Select 1  
From table

예요?1합니까?

또한 어떤 시나리오에서 사용할 수 있습니까?

select 1 from table는 테이블의 모든 행에 대해 상수 1을 반환합니다.가 자신의 레코드와 때 where 및 "/"join.

SELECT 1 FROM TABLE_NAME'1번으로 하다그 자체로는 그다지 눈에 띄지 않기 때문에, 통상은 와 함께 사용합니다.WHERE 많은 경우EXISTS(@gbn이 지적한 바와 같이, 이것은 반드시 베스트 프랙티스는 아니지만, 그것이 실제로 의미가 없다고 해도 충분히 일반적인 것입니다(즉, 다른 사람이 사용하고 있기 때문에 바로 「더 명백」하기 때문에 사용합니다).물론, 그것은 점성이 있는 닭과 달걀의 문제일 수도 있지만, 저는 일반적으로 살고 있지 않습니다.)

 SELECT * FROM TABLE1 T1 WHERE EXISTS (
     SELECT 1 FROM TABLE2 T2 WHERE T1.ID= T2.ID
 );

기본적으로 위의 내용은 표 2의 ID를 가진 표 1의 모든 것을 되돌립니다.(이것은 명백히 조작된 예이지만, 저는 이것이 아이디어를 전달한다고 생각합니다.개인적으로는 을 ''라고 생각하고 .SELECT * FROM TABLE1 T1 WHERE ID IN (SELECT ID FROM TABLE2);필자는 상황에 따라 부득이한 이유가 없는 한 독자에게 훨씬 더 명확하다고 생각한다.)

편집

사실 제가 지금까지 잊고 있었던 경우가 한 가지 있습니다. 언어에서 내의 , 경우에 따라서는 「」라고 경우가 있습니다.SELECT 1 FROM TABLE_NAME이것의 컬럼을 따라서는 메리트.SELECT *단순히 DB가 언어로 반환되는 열이 많을수록 데이터 구조가 커져 시간이 더 오래 걸린다는 것을 의미합니다.

그런 걸 말하는 거라면

SELECT * FROM AnotherTable
  WHERE EXISTS (SELECT 1 FROM table WHERE...) 

그럼 이 일이 일어났다는 것은 속설입니다.1

SELECT * FROM AnotherTable
  WHERE EXISTS (SELECT * FROM table WHERE...) 

1 ★★★★★★★★★★★★★★★★★」*ANSI SQL 1992 Standard 191페이지에 따라 다음과 같이 기술할 수 있습니다.

SELECT * FROM AnotherTable
  WHERE EXISTS (SELECT 1/0 FROM table WHERE...) 

명령대로 동작합니다.항상 정수 1을 반환합니다.where 절과 일치하는 레코드가 있는지 확인하는 데 사용됩니다.

select 1 from table일부 데이터베이스에서 연결이 활성 상태인지 확인하기 위한 쿼리로 사용되며, 연결 풀에서 연결을 검색하거나 반환할 때 자주 사용됩니다.

는 ★★★★★★★★★★★★★★★★★★.1모든 레코드에 대해서요__

조금 더 구체적으로 말하면, 이것을 사용하여

SELECT 1 FROM MyUserTable WHERE user_id = 33487

하는 대신에

SELECT * FROM MyUserTable WHERE user_id = 33487

왜냐하면 당신은 결과를 보는 것에 신경 쓰지 않기 때문이죠.숫자 1을 묻는 것은 데이터베이스에서 매우 쉽습니다(조회를 수행할 필요가 없기 때문입니다).

알려져 에는 ""를 할 수 .HAVINGGROUP BY절을 클릭합니다.

「」는HAVING절이 세트 전체에 적용됩니다. ★★★★★★★★★★★★★★★.SELECT을 사용하다 그렇지 않으면 "GROUP BY에 포함되어 있지 않기 때문에 선택에서 열이 잘못되었습니다." 등의 오류가 발생합니다.

따라서 리터럴 을 사용해야 합니다(SQL은 0열의 결과 세트를 허용하지 않기 때문에 -- Why?!). 및 리터럴 값 1(INTEGER으로 사용됩니다.이 경우 입니다.HAVING은 을 평가합니다.TRUE결과 집합은 값 1을 나타내는 열 하나와 함께 한 행이 됩니다. 그렇지 않으면 빈 집합이 됩니다.

예: 열에 둘 이상의 고유 값이 있는지 확인하려면:

SELECT 1
  FROM tableA
HAVING MIN(colA) < MAX(colA);

테이블에 데이터가 없는지 모를 경우 다음 쿼리를 사용할 수 있습니다.

SELECT cons_value FROM table_name;

예:

SELECT 1 FROM employee;
  1. 행의 총수가 포함된 열이 반환되고 모든 행은 동일한 상수 값 1을 가집니다(이 경우 모든 행에 대해 1을 반환합니다).
  2. 테이블에 행이 없으면 아무것도 반환되지 않습니다.

따라서 이 SQL 쿼리를 사용하여 테이블에 데이터가 있는지 여부를 확인합니다.또한 행의 수는 이 테이블에 존재하는 행의 수를 나타냅니다.

WHERE 절에 따라 true 또는 false를 체크하는 경우 table에서 condition이 가장 저렴한 방법을 1로 선택합니다.

즉, 내부 쿼리의 결과에 따라 외부 쿼리를 계산해야 하므로 값 "1"을 출력으로 사용하거나 대부분의 시간을 내부 쿼리로 사용합니다.항상 1을 사용하는 것은 아니지만 몇 가지 특정 값이 있습니다.

그러면 정적으로 값 1로 출력됩니다.

다음과 같은 SQL 주입에서 항상 사용됩니다.

www.urlxxxxx.com/xxxx.asp?id=99 union select 1,2,3,4,5,6,7,8,9 from database;

이 숫자를 사용하여 데이터베이스가 존재하는 위치를 추측하고 지정한 데이터베이스의 열 이름을 추측할 수 있습니다.그리고 표의 값.

이것은 테이블에서 숫자 첫 번째 컬럼을 취득하는 것을 의미합니다.즉, Emply_num, Empl_no From Employees를 선택합니다.여기서는 Emply_num 열을 취득하는 것을 의미합니다.감사해요.

그 이유는 적어도 MySQL의 경우입니다.이것은 MySQL 매뉴얼에서 가져온 것입니다.

InnoDB는 테이블에 값을 저장하는 대신 시작 후 테이블에 처음 액세스할 때 테이블에 대한 인덱스 카디널리티 값을 계산합니다.이 단계는 데이터를 여러 테이블로 분할하는 시스템에서 상당한 시간이 걸릴 수 있습니다.이 오버헤드는 초기 테이블 열기 작업에만 적용되므로 나중에 사용하기 위해 테이블을 "웜업"하려면 시작 후 SELECT 1 FROM tbl_name LIMIT 1과 같은 스테이트먼트를 발행하여 즉시 액세스하십시오.

이것은 IF EXISTES()의 편리성을 위해서만 사용됩니다.그렇지 않으면 같이 가셔도 됩니다.

select * from [table_name]

이미지 '존재하는 경우'의 경우 지정된 조건을 가진 행이 존재하는지 여부에 관계없이 행의 내용이 무엇이든지 상관없습니다.

select 1 from Users

위의 예제 코드, 단일 열에 1이 있는 사용자 수와 동일한 행의 수를 반환합니다.

언급URL : https://stackoverflow.com/questions/7171041/what-does-it-mean-by-select-1-from-table

반응형