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

   Á¶È¸ 3057   Ãßõ 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 1223/5705
2015-12   1662799   ¹é¸Þ°¡
2014-05   5127920   Á¤ÀºÁØ1
2006-01   5234   À±¿ë½Ä
2004-05   8079   ÀåÁø¿ì
2004-09   6939   ÀÌÀ±¼º
2005-01   6716   ±èÀå¿ø
2008-03   5076   ±èżº
2006-06   5375   À̼ºÈÆ
2005-05   6511   ¹®Ãß±â
2002-12   12701   °í´ëÁØ
2003-01   11600   ±èÇѼö
2008-11   4778   ¼ÛÈ­½Ä
2004-05   8586   ¼ÛÈ­½Ä
2007-11   5411   À¯È£ÁØ
2005-05   6335   À̱æÁÖ
2005-07   5629   Á¶µ¿¼·
2006-04   5305   ±è¼º½Ä
2003-12   9203   ÀÌ»óö
2006-10   4792   Á¤¸íÇö
2004-05   8335   ±è¿ìÅÃ
2007-04   4699   ±èÁÖ¿µ
2007-09   6020   ±èÇöÈ£