SQL SubqueryµÄÓ÷¨
ÎÒÃÇ¿ÉÒÔÔÚÒ»¸ö SQL Óï¾äÖзÅÈëÁíÒ»¸ö SQL Óï¾ä¡£µ±ÎÒÃÇÔÚ WHERE ×Ó¾ä»ò WHERE ×Ó¾ä»ò HAVING ×Ó¾äÖвåÈëÁíÒ»¸ö SQL Óï¾äʱ£¬ÎÒÃǾÍÓÐÒ»¸ö subquery µÄ¼Ü¹¹¡£ Subquery µÄ×÷ÓÃÊÇÊ²Ã´ÄØ£¿µÚÒ»£¬Ëü¿ÉÒÔ±»ÓÃÀ´Á¬½Ó±í¸ñ¡£ÁíÍ⣬ÓеÄʱºò subquery ÊÇΨһÄܹ»Á¬½ÓÁ½¸ö±í¸ñµÄ·½Ê½¡£
Subquery µÄÓï·¨ÈçÏ£º
SELECT "À¸Î»1"
from "±í¸ñ"
WHERE "À¸Î»2" [±È½ÏÔËËãËØ]
(SELECT "À¸Î»1"
from "±í¸ñ"
WHERE [Ìõ¼þ])
[±È½ÏÔËËãËØ] ¿ÉÒÔÊÇÏàµÈµÄÔËËãËØ£¬ÀýÈç =, >, <, >=, <=. ÕâÒ²¿ÉÒÔÊÇÒ»¸ö¶ÔÎÄ×ÖµÄÔËËãËØ£¬ÀýÈç "LIKE."
ÎÒÃǾÍÓøոÕÔÚ²ûÊö SQL Á¬½ÓʱÓùýµÄÀý×Ó£º
Store_Information ±í¸ñ
store_name
Sales
Date
Los Angeles
$1500
Jan-05-1999
San Diego
$250
Jan-07-1999
Los Angeles
$300
Jan-08-1999
Boston
$700
Jan-08-1999
Geography ±í¸ñ
region_name
store_name
East
Boston
East
New York
West
Los Angeles
West
San Diego
ÎÒÃÇÒªÔËÓà subquery À´ÕÒ³öËùÓÐÔÚÎ÷²¿µÄµêµÄÓªÒµ¶î¡£ÎÒÃÇ¿ÉÒÔÓÃÏÂÃæµÄ SQL À´´ïµ½ÎÒÃǵÄÄ¿µÄ£º
SELECT SUM(Sales) from Store_Information
WHERE Store_name IN
(SELECT store_name from Geography
WHERE region_name = 'West')
½á¹û:
SUM(Sales)
2050
ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃDz¢Ã»ÓÐÖ±½Ó½«Á½¸ö±í¸ñÁ¬½ÓÆðÀ´£¬È»ºóÓÉ´ËÖ±½ÓËã³öÿһ¼äÎ÷ÇøµêÃæµÄÓªÒµ¶î¡£ÎÒÃÇ×öµÄÊÇÏÈÕÒ³öÄÄЩµêÊÇÔÚÎ÷ÇøµÄ£¬È»ºóÔÙËã³öÕâЩµêµÄÓªÒµ¶î×ܹ²ÊǶàÉÙ¡£
Ïà¹ØÎĵµ£º
ϵͳ»·¾³£ºWindows 7
Èí¼þ»·¾³£ºVisual C++ 2008 SP1 +SQL Server 2005
±¾´ÎÄ¿µÄ£º±àдһ¸öº½¿Õ¹ÜÀíϵͳ
ÕâÊÇÊý¾Ý¿â¿Î³ÌÉè¼ÆµÄ³É¹û£¬ËäÈ»³É¼¨²»¼Ñ£¬µ«ÊÇ×÷ΪÎÒÓÃVC++ ÒÔÀ´±àдµÄ×î´ó³ÌÐò»¹ÊÇ´«µ½ÍøÉÏ£¬ÒÔ¹©²Î¿¼¡£ÓÃVC++ ×öÊý¾Ý¿âÉè¼Æ²¢²»ÈÝÒ×£¬µ«Ò²²»ÊDz»¿ÉÄÜ¡£ÒÔÏÂÊÇÎҵijÌÐò½çÃæ£¬ºóÃæ ......
³£Óú¯Êý
select replicate('a1',3)--a1µÄÖµÖØ¸´Èý´Î
½á¹ûΪ£ºa1a1a1
select len('222')
--¼ÆËã×Ö·ûµÄ¸öÊý½á¹ûΪ
select datalength('222')
--¼ÆËã×Ö½ÚÊý£¬½á¹ûΪ
select datalength(N'222')
-- unicodeÀàÐÍ£¬Õ¼Óøö×Ö½Ú£¬½á¹ûΪ
select substring('abcde',1,3)
-- ¸ñʽ£ºsubstr ......
[Õª]ÔÚSQLÖÐɾ³ýÖØ¸´¼Ç¼µÄ¶àÖÖ·½·¨
±¾ÎÄ×ܽáÁËһЩɾ³ýÖØ¸´¼Ç¼µÄ·½·¨£¬ÔÚOracleÖУ¬¿ÉÒÔͨ¹ýΨһrowidʵÏÖɾ³ýÖØ¸´¼Ç¼£»»¹¿ÉÒÔ½¨ÁÙʱ±íÀ´ÊµÏÖ...ÕâÀïÖ»Ìáµ½ÆäÖеļ¸ÖÖ¼òµ¥ÊµÓõķ½·¨£¬Ï£Íû¿ÉÒԺʹó¼Ò·ÖÏí£¨ÒÔ±íemployeeΪÀý£©¡£
SQL> desc employee
Name   ......
IN Õâ¸öÖ¸Áî¿ÉÒÔÈÃÎÒÃÇÒÀÕÕÒ»»òÊý¸ö²»Á¬Ðø (discrete) µÄÖµµÄÏÞÖÆÖ®ÄÚ×¥³öÊý¾Ý¿âÖеÄÖµ£¬¶ø BETWEEN ÔòÊÇÈÃÎÒÃÇ¿ÉÒÔÔËÓÃÒ»¸ö·¶Î§ (range) ÄÚ×¥³öÊý¾Ý¿âÖеÄÖµ¡£BETWEENÕâ¸ö×Ó¾äµÄÓï·¨ÈçÏ£º
SELECT "À¸Î»Ãû"
from " ±í¸ñÃû"
WHERE "À¸Î»Ãû" BETWEEN 'ÖµÒ»' AND 'Öµ¶þ'
Õ⽫ѡ³öÀ¸Î»Öµ°üº¬ÔÚÖµÒ»¼°Öµ¶þÖ®¼äµÄÿһ±Ê× ......
ÄÇÎÒÃÇÈçºÎ¶Ôº¯Êý²úÉúµÄÖµÀ´É趨Ìõ¼þÄØ£¿¾ÙÀýÀ´Ëµ£¬ÎÒÃÇ¿ÉÄÜÖ»ÐèÒªÖªµÀÄÄЩµêµÄÓªÒµ¶îÓг¬¹ý $1,500¡£ÔÚÕâ¸öÇé¿öÏ£¬ÎÒÃDz»ÄÜʹÓà WHERE µÄÖ¸Áî¡£ÄÇÒªÔõô°ìÄØ£¿ºÜÐÒÔ˵أ¬SQL ÓÐÌṩһ¸ö HAVING µÄÖ¸Á¶øÎÒÃǾͿÉÒÔÓÃÕâ¸öÖ¸ÁîÀ´´ïµ½Õâ¸öÄ¿±ê¡£ HAVING ×Ó¾äͨ³£ÊÇÔÚÒ»¸ö SQL ¾ä×ÓµÄ×îºó¡£Ò»¸öº¬ÓÐ HAVING ×Ó¾äµÄ SQL ²¢²» ......