SQL Äõ¸® Áú¹®ÀÔ´Ï´Ù.

   Á¶È¸ 2965   Ãßõ 0    

안녕하세요.

연구에 사용하는 자료 추출을 위하여 다음과 같은 쿼리를 이용하고 있습니다(PostgreSQL).

CREATE TABLE public.patients_list AS SELECT DISTINCT person_id FROM hlud.condition_occurrence WHERE condition_source_value SIMILAR TO '(A15|A16|A17|A18|A19)%';

SELECT * FROM hlud.condition_occurrence WHERE person_id IN (SELECT person_id FROM public.patients_list);


첫번째 문의입니다)

1번째 줄에서 환자번호를 추출하여 새로운 table을 생성하고, 2번째 줄에서 이 환자목록에 해당하는 자료를 추출하는 방식입니다.

여기서 1번째 줄의 테이블 생성 없이 2번째 줄의 쿼리에 해당 내용을 넣는 방법이 없을지 문의합니다.


두번 문의입니다)

이 쿼리가 MySQL이나 Oracle에서도 동일하게 동작하는지 알고 싶습니다. 


감사합니다.

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
Å×À̺íÀ» ¸¸µé ÇÊ¿ä°¡ ¾ø¾î º¸ÀÔ´Ï´Ù.
±×³É
SELECT *
FROM hlud.condition_occurrence
WHERE condition_source_value SIMILAR TO '(A15|A16|A17|A18|A19)%';
ÀÌ·¸°Ô Á¶È¸ ÇÏ¸é µË´Ï´Ù.
±èµ¿¼öP 2019-09
SELECT * FROM hlud.condition_occurrence WHERE person_id IN (SELECT DISTINCT person_id FROM hlud.condition_occurrence WHERE condition_source_value SIMILAR TO '(A15|A16|A17|A18|A19)%');

°¡´ÉÇϸé in Äõ¸®º¸´Ù´Â join À» ÇÏ½Ã´Â°Ô ³´½À´Ï´Ù.
MySQL À̳ª Oracle¿¡¼­´Â Á¤±Ô½Ä °Ë»öÀ» ÀÌ¿ëÇÏ¸é µÉ°ÍÀ¸·Î º¸ÀÔ´Ï´Ù.
°ËÁõµÇÁö ¾Ê¾ÒÁö¸¸ ¾Æ·¡¿Í °°Àº Äõ¸® ÀÔ´Ï´Ù.

SELECT *
FROM hlud.condition_occurrence
WHERE regexp_like(condition_source_value, '^(A15|A16|A17|A18|A19)')
º¸Åë ÀӽøñÀûÀ¸·Î Å×ÀÌºí ¸¸µé¾î¼­ Á¶È¸ÇÏ´Â °æ¿ì´Â ¹Ýº¹ÀûÀÎ Á¶°ÇÁ¶È¸°¡ ÀÖ´Â °æ¿ìÀÔ´Ï´Ù. Àú µÎÁÙ·Î ³¡³ª´Â ·ÎÁ÷À̶ó¸é DAP¹ÚÀÎÈ£´Ô Àß Á¤¸®ÇØ ÁֽŴë·Î ¾²½Ã¸é µÉµí Çѵ¥, Ȥ½Ã µÞ ·ÎÁ÷ÀÌ ´õ ÀÖ´ÂÁö ²Ä²ÄÇÑ È®ÀÎÀº ÇÊ¿äÇÒ°Í °°½À´Ï´Ù.
º¯¼±ÁÖ 2019-09
¸ðµç ºÐµé²² °¨»çµå¸³´Ï´Ù.


QnA
Á¦¸ñPage 4794/5695
2015-12   1610883   ¹é¸Þ°¡
2014-05   5073829   Á¤ÀºÁØ1
2019-12   2965   ±è»óÇõ2
2021-04   2965   ±¸½ÊÆò
2018-08   2965   ½Ã°ñ³ëÀÎ
2020-03   2965   ¹ÙºÎÆÃÀÌ
2023-09   2965   ½´ÆÛÀ¢µð
2022-02   2965   ºÀ·¡
2020-08   2965   GPGPU
2019-11   2965   À¯ÅäÆÙ
2021-06   2965   Sikieiki
2020-08   2965   2pcnhs
2019-10   2965   ÇູÇϼ¼
2020-09   2965   GPGPU
2023-07   2965   ¹«½î»Ôó·³
2020-07   2965   FreeBSD
2019-03   2965   ½ÅÀº¿Ö
2019-09   2965   ÇູÇϼ¼
2017-10   2965   ´ÃÆĶõ
2021-06   2965   °í¾ç½Ã
2023-08   2965   IÀû¿ì
2020-03   2965   ÄÉÀ̾ƽº