2개이상 중복되는 내용을 검색하는 지리문 having
조회 2,918 2026-08-18 등록
로그인하면 의견을 남길 수 있습니다.
아직 의견이 없습니다. 첫 의견을 남겨보세요.
게시글
특정문자의 갯수가 몇개인지 알아내는 지리문
내용중에 특정 문자가 몇게 있는지를 알아내는 지리문 select (length(filed1) - length(replace(filed1, 'a', ''))) / length('a') as count from tablename 검색해서 알게된것이지만 정말 머리 잘사용하듯함 전체텍스트갯수-(전체텍스트에서 갯수를 알고자하는 텍스트를 제거한갯수)=>제거된 갯수를알아냄 제거된갯수가 원하는 텍스트 갯수는 아닐수있담 텍스트가 "a" 하나이면 되지만 "aa" 2개일수도 있어 변환시킨 문자의 텍스트갯수로 나눈다 그럼 특정문자의 갯수를 알아낼수 있다
count(distinct(user_id)) 여기에 추가적인 if문을 넣는경우
select count(distinct if(user_age>20,user_id,null) ) as count1 "; user_age > 20 이면서 user_id가 중복제거한 갯수를 가져오는 지리문
서브쿼리 내용호출할때 사용 댓글수 많은것 순으로 정렬
select *,( select count(*) from table2 where 1 and table1.idx.code=table2.sidx_code //상위에 해당하는내용과 서브에 해당하는 내용을 일치시켜서 갯수호출함 group by sidx_code ) as count //count로 카운트 갯수를 표기함 from table1 where 1 order by count //전체 적인 지리문을 정렬함 첫번째 테이블 table1 두번째 테이블 table2 table1.idx_code값은 table2.sidx_code값과 동일함 sidx_code값은 여러게 존제함
여러게 필드를 조합해서 검색하는 방법
필드1,2,3의 내용을 합친후에 그내용을 검색하는 방법이다 where 1 and concat(필드1,필드2,필드3) like '%검색문구%'
2개의 필드릴 합쳐서 검색하는 방법
필드를 합쳐서 query문을 실행할때 concat()함수를 사용하면된다 concat(cat_code,p_title) like '%B123%' ex) cat_code => AB p_title => 1234 B123 으로 검색할때 위와 같은 형태로 하면된다
테이블2개일때 차집합,교집합 구하는 방법
A테이블,B테이블 각각존제할때 A.idx_code -> 1,2,3,4 B.idx_code -> 2,3 일때 B.idx_code값을 빼고 A.idx_code -> 1,4만 호출하는 방법 select * from A where code not in (select idx_code from B) -> 차집합을 구할수 있다 select * from A where code in (select idx_code from B) -> 2,3처럼 교집합 내용을 구할수 있다
게시물 작성중에 최근 등록한 사람 아이디별로 노출하기
10명의 사람이 글을 여러게 올려놓았을때 최근에 올린 사람3명을 불러오기 위한 지리문 select distinct(이름) from tablename where and sidx_code='$key_code' order by 날짜 desc
다른 테이블에 있는 내용을 insert 하는 방법
테이블 내의 레코드를 그대로 입력하는 방법 내용을 select 한다음 내용을 insert하면된다 이때 따움표나 이런것때문에 문제가 생길수 있는데 이때를 위해 PHP에선 addslashes() 함수를 사용해서 입력한다 이건 뭐 간단하게 생각하면될문제이다 그러나 소개하고자 하는것은 좀더 효율적으로 처리하기위한 방법이다 지리문 자체에서 insert하는 방법이다 insert into 테이블1 select * from 테이블2 where 1 테이블2에 있는 내용을 테이블1에 insert하는 방법이다 위와 같은 방법으로 하면 속도면이나 프로그램 소스가 현저하게 줄어들게된다 물론 해당 필드명을 하나하나 코딩할 필요도 없다
의견 0
로그인하면 의견을 남길 수 있습니다.
아직 의견이 없습니다. 첫 의견을 남겨보세요.