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¢Ã»ÓÐÖ±½Ó½«Á½¸ö±í¸ñÁ¬½ÓÆðÀ´£¬È»ºóÓÉ´ËÖ±½ÓËã³öÿһ¼äÎ÷ÇøµêÃæµÄÓªÒµ¶î¡£ÎÒÃÇ×öµÄÊÇÏÈÕÒ³öÄÄЩµêÊÇÔÚÎ÷ÇøµÄ£¬È»ºóÔÙËã³öÕâЩµêµÄÓªÒµ¶î×ܹ²ÊǶàÉÙ¡£
Ïà¹ØÎĵµ£º
ÔÚÎÒÃÇÆ½Ê±Ð´³ÌÐòµÄʱºò£¬ÓÐЩ²ÎÊýÊǾ³£¸Ä±äµÄ£¬¶øÕâÖָı䲻ÊÇÎÒÃÇÔ¤ÖªµÄ¡£±ÈÈç˵ÎÒÃÇ¿ª·¢ÁËÒ»¸ö²Ù×÷Êý¾Ý¿âµÄÄ£¿é£¬ÔÚ¿ª·¢µÄʱºòÎÒÃÇÁ¬½Ó±¾µØµÄÊý¾Ý¿âÄÇô IP £¬Êý¾Ý¿âÃû³Æ£¬±íÃû³Æ£¬Êý¾Ý¿âÖ÷»úµÈÐÅÏ¢ÊÇÎÒÃDZ¾µØµÄ£¬ÒªÊ¹µÃÕâ¸ö²Ù×÷Êý¾ÝµÄÄ£¿é¾ßÓÐͨÓÃÐÔ£¬ÄÇôÒÔÉÏÐÅÏ¢¾Í²»ÄÜдËÀÔÚ³ÌÐòÀͨ³£ÎÒÃǵÄ×ö·¨ÊÇÓÃÅäÖÃÎļþÀ´½â ......
ÊÇÓÃÀ´×öʲôµÄÄØ£¿Ò»¸ö×î³£Óõķ½Ê½Êǽ«×ÊÁÏ´ÓÊý¾Ý¿âÖеıí¸ñÄÚÑ¡³ö¡£´ÓÕâÒ»¾ä»Ø´ðÖУ¬ÎÒÃÇÂíÉÏ¿ÉÒÔ¿´µ½Á½¸ö¹Ø¼ü×Ö£º ´Ó (from) Êý¾Ý¿âÖеıí¸ñÄÚÑ¡³ö (SELECT)¡£(±í¸ñÊÇÒ»¸öÊý¾Ý¿âÄڵĽṹ£¬ËüµÄÄ¿µÄÊÇ´¢´æ×ÊÁÏ¡£ÔÚ±í¸ñ´¦ÀíÕâÒ»²¿·ÖÖУ¬ÎÒÃÇ»áÌáµ½ÈçºÎʹÓà SQL À´É趨±í¸ñ¡£) ÎÒÃÇÓÉÕâÀï¿ÉÒÔ¿´µ½×î»ù±¾µÄ SQL ¼Ü¹¹£º
SE ......
֮ǰÎÒÃÇ¿´µ½µÄ×óÁ¬½Ó (left join)£¬ÓÖ³ÆÄÚ²¿Á¬½Ó (inner join)¡£ÔÚÕâ¸öÇé¿öÏ£¬ÒªÁ½¸ö±í¸ñÄÚ¶¼ÓÐͬÑùµÄÖµ£¬ÄÇÒ»±Ê×ÊÁϲŻᱻѡ³ö¡£ÄÇÈç¹ûÎÒÃÇÏëÒªÁгöÒ»¸ö±í¸ñÖÐÿһ±ÊµÄ×ÊÁÏ£¬ÎÞÂÛËüµÄÖµÔÚÁíÒ»¸ö±í¸ñÖÐÓÐûÓгöÏÖ£¬ÄǸÃÔõô°ìÄØ£¿ÔÚÕâ¸öʱºò£¬ÎÒÃǾÍÐèÒªÓõ½ SQL OUTER JOIN (ÍⲿÁ¬½Ó) µÄÖ¸Áî¡£
ÍⲿÁ¬½ÓµÄÓï·¨ÊÇÒÀÊý¾ ......