mark340
착하게살자
mark340
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • 백준 (11)
    • 알고리즘 (1)
    • Javascript (17)
    • CS (18)
    • 기타 (9)
    • AI (1)
    • Angular (2)
    • Linux (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • oauth
  • parsing
  • Closure
  • MySQL
  • JavaScript

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
mark340

착하게살자

CS

[SQL] WHERE 1=1

2022. 12. 31. 12:50

프리온보딩 백엔드 과제중 팀원이 작성한 코드에서 이해가지 않는 코드를 발견했었다..

지금은 이 코드가 무엇인지 알지만... 또 사용할 일을 대비하여,, 기록한다..

 

const getMeasurementData = async (date1, date2, weight1, weight2) => {
  const getMeasurementData = await myDataSource.query(
    `
    SELECT
      user_id as id, 
      weight,
      date_format(created_at, "%Y-%m-%d %h:%m:%s") as date,
      JSON_ARRAYAGG(JSON_OBJECT("value", measurement_data.data, "name", data_types.name)) as typeData
    FROM measurements
      INNER JOIN measurement_data ON measurements.id = measurement_data.measurement_id
      INNER JOIN data_types ON measurement_data.data_type_id = data_types.id
    WHERE 1=1 AND ((("null" IN (?))AND(created_at=created_at))OR(created_at BETWEEN ? AND ? ))
    OR
    ((("null" IN (?))AND(weight=weight))OR(weight BETWEEN ? AND ? ))
    GROUP BY user_id, weight, created_at
    `,
    [date1, date1, date2, weight1, weight1, weight2],
  );
  return getMeasurementData;
};

 

SQL문으로 DB에서 조회해오는 코드 중 12번째 줄

WHERE 1=1

이 코드는 무엇일까..

 

우선, WHERE는 조회하려는 데이터들의 조건을 거는 문법.

1 = 1은 말그대로 참을 의미한다.

해석해보면,,

데이터들을 모두(참) 조회한다.

즉, 1=1이란 조건은 있으나마나 한 조건.

그렇다면 왜 사용할까?

 

WHERE절의 다중조건을 걸어줘야하는 경우 사용한다.

 

뒤에나오는 코드처럼  AND나 OR등 조건을 적용하는 경우 

WHRE 1=1 없이 아래와 같이 코드를 작성하면 오류가 발생된다.

 

WHERE 

USER_ID = '3'  ==> 해당 줄이 비워지면 코드에러남

AND

NAME = "mark"

`
WHERE 
USER_ID = '3'  ==> 해당 줄이 비워지면 코드에러남
AND NAME = "mark"
`

 

WHRE 1=1 을 사용하여 코드를 아래와 같이 사용할 수 있다.

`
WHERE 1=1
AND USER_ID = "3"
AND NAME = "mark"
`

 

 

 

'CS' 카테고리의 다른 글

[OS] 메모리 계층 구조 쉽게 이해하기  (0) 2023.01.04
Object Oriented Programming 객체 지향 프로그래밍  (0) 2023.01.02
파싱(Parsing)이란 무엇인가  (0) 2022.12.30
[Network] 인터넷 네트워크 구조 (IP,TCP,UDP,DNS,PORT)  (0) 2022.12.30
[OAuth] OAuth 2.0 이란  (0) 2022.10.14
    'CS' 카테고리의 다른 글
    • [OS] 메모리 계층 구조 쉽게 이해하기
    • Object Oriented Programming 객체 지향 프로그래밍
    • 파싱(Parsing)이란 무엇인가
    • [Network] 인터넷 네트워크 구조 (IP,TCP,UDP,DNS,PORT)
    mark340
    mark340
    착하게삽시다

    티스토리툴바