±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcnblog£¬±¾ÎÄÖ÷Òª½éÉÜMySQL¼Ü¹¹¡¢mysqlµÄ²éѯִÐÐÁ÷³ÌÒÔ¼°SQL½âÎö˳ÐòµÈÏà¹ØÖªÊ¶¡£ |
|
ǰÑÔ£º Ò»Ö±ÊÇÏëÖªµÀÒ»ÌõSQLÓï¾äÊÇÔõô±»Ö´Ðеģ¬ËüÖ´ÐеÄ˳ÐòÊÇÔõÑùµÄ£¬È»ºó²é¿´×ܽá¸÷·½×ÊÁÏ£¬¾ÍÓÐÁËÏÂÃæÕâһƪ²©ÎÄÁË¡£ ±¾ÎĽ«´ÓMySQL×ÜÌå¼Ü¹¹--->²éѯִÐÐÁ÷³Ì--->Óï¾äÖ´ÐÐ˳ÐòÀ´Ì½ÌÖÒ»ÏÂÆäÖеÄ֪ʶ¡£

´ÓÉÏͼÖÐÎÒÃÇ¿ÉÒÔ¿´µ½£¬Õû¸ö¼Ü¹¹·ÖΪÁ½²ã£¬ÉϲãÊÇMySQLDµÄ±»³ÆÎªµÄ¡®SQL
Layer¡¯£¬Ï²ãÊǸ÷ÖÖ¸÷Ñù¶ÔÉÏÌṩ½Ó¿ÚµÄ´æ´¢ÒýÇæ£¬±»³ÆÎª¡®Storage Engine Layer¡¯¡£ÆäËü¸÷¸öÄ£¿éºÍ×é¼þ£¬´ÓÃû×ÖÉϾͿÉÒÔ¼òµ¥Á˽⵽ËüÃǵÄ×÷Óã¬ÕâÀï¾Í²»ÔÙÀÛÊöÁË
Ò»¡¢MySQL¼Ü¹¹×ÜÀÀ£º ¼Ü¹¹×îºÃ¿´Í¼£¬ÔÙÅäÉϱØÒªµÄ˵Ã÷ÎÄ×Ö¡£ ÏÂͼ¸ù¾Ý²Î¿¼Êé¼®ÖÐһͼΪԱ¾£¬ÔÙÔÚÆäÉÏÌí¼ÓÉÏÁË×Ô¼ºµÄÀí½â¡£
´ÓÉÏͼÖÐÎÒÃÇ¿ÉÒÔ¿´µ½£¬Õû¸ö¼Ü¹¹·ÖΪÁ½²ã£¬ÉϲãÊÇMySQLDµÄ±»³ÆÎªµÄ¡®SQL Layer¡¯£¬Ï²ãÊǸ÷ÖÖ¸÷Ñù¶ÔÉÏÌṩ½Ó¿ÚµÄ´æ´¢ÒýÇæ£¬±»³ÆÎª¡®Storage
Engine Layer¡¯¡£ÆäËü¸÷¸öÄ£¿éºÍ×é¼þ£¬´ÓÃû×ÖÉϾͿÉÒÔ¼òµ¥Á˽⵽ËüÃǵÄ×÷Óã¬ÕâÀï¾Í²»ÔÙÀÛÊöÁË¡£
¶þ¡¢²éѯִÐÐÁ÷³Ì ÏÂÃæÔÙÏòǰ×ßһЩ£¬ÈÝÎÒ¸ù¾Ý×Ô¼ºµÄÈÏʶ˵һϲéѯִÐеÄÁ÷³ÌÊÇÔõÑùµÄ£º
1.Á¬½Ó 1.1¿Í»§¶Ë·¢ÆðÒ»ÌõQueryÇëÇ󣬼àÌý¿Í»§¶ËµÄ¡®Á¬½Ó¹ÜÀíÄ£¿é¡¯½ÓÊÕÇëÇó 1.2½«ÇëÇóת·¢µ½¡®Á¬½Ó½ø/Ïß³ÌÄ£¿é¡¯ 1.3µ÷Óá®Óû§Ä£¿é¡¯À´½øÐÐÊÚȨ¼ì²é 1.4ͨ¹ý¼ì²éºó£¬¡®Á¬½Ó½ø/Ïß³ÌÄ£¿é¡¯´Ó¡®Ïß³ÌÁ¬½Ó³Ø¡¯ÖÐÈ¡³ö¿ÕÏеı»»º´æµÄÁ¬½ÓÏ̺߳Ϳͻ§¶ËÇëÇó¶Ô½Ó£¬Èç¹ûʧ°ÜÔò´´½¨Ò»¸öеÄÁ¬½ÓÇëÇó
2.´¦Àí
2.1ÏȲéѯ»º´æ£¬¼ì²éQueryÓï¾äÊÇ·ñÍêȫƥÅ䣬½Ó×ÅÔÙ¼ì²éÊÇ·ñ¾ßÓÐȨÏÞ£¬¶¼³É¹¦ÔòÖ±½ÓÈ¡Êý¾Ý·µ»Ø 2.2ÉÏÒ»²½ÓÐʧ°ÜÔòת½»¸ø¡®ÃüÁî½âÎöÆ÷¡¯£¬¾¹ý´Ê·¨·ÖÎö£¬Óï·¨·ÖÎöºóÉú³É½âÎöÊ÷ 2.3½ÓÏÂÀ´ÊÇÔ¤´¦Àí½×¶Î£¬´¦Àí½âÎöÆ÷ÎÞ·¨½â¾öµÄÓïÒ壬¼ì²éȨÏ޵ȣ¬Éú³ÉеĽâÎöÊ÷ 2.4ÔÙת½»¸ø¶ÔÓ¦µÄÄ£¿é´¦Àí 2.5Èç¹ûÊÇSELECT²éѯ»¹»á¾ÓÉ¡®²éѯÓÅ»¯Æ÷¡¯×ö´óÁ¿µÄÓÅ»¯£¬Éú³ÉÖ´Ðмƻ® 2.6Ä£¿éÊÕµ½ÇëÇóºó£¬Í¨¹ý¡®·ÃÎÊ¿ØÖÆÄ£¿é¡¯¼ì²éËùÁ¬½ÓµÄÓû§ÊÇ·ñÓзÃÎÊÄ¿±ê±íºÍÄ¿±ê×ֶεÄȨÏÞ 2.7ÓÐÔòµ÷Óá®±í¹ÜÀíÄ£¿é¡¯£¬ÏÈÊDz鿴table cacheÖÐÊÇ·ñ´æÔÚ£¬ÓÐÔòÖ±½Ó¶ÔÓ¦µÄ±íºÍ»ñÈ¡Ëø£¬·ñÔòÖØÐ´ò¿ª±íÎļþ 2.8¸ù¾Ý±íµÄmetaÊý¾Ý£¬»ñÈ¡±íµÄ´æ´¢ÒýÇæÀàÐ͵ÈÐÅÏ¢£¬Í¨¹ý½Ó¿Úµ÷ÓöÔÓ¦µÄ´æ´¢ÒýÇæ´¦Àí 2.9ÉÏÊö¹ý³ÌÖвúÉúÊý¾Ý±ä»¯µÄʱºò£¬Èô´ò¿ªÈÕÖ¾¹¦ÄÜ£¬Ôò»á¼Ç¼µ½ÏàÓ¦¶þ½øÖÆÈÕÖ¾ÎļþÖÐ 3.½á¹û 3.1QueryÇëÇóÍê³Éºó£¬½«½á¹û¼¯·µ»Ø¸ø¡®Á¬½Ó½ø/Ïß³ÌÄ£¿é¡¯ 3.2·µ»ØµÄÒ²¿ÉÒÔÊÇÏàÓ¦µÄ״̬±êʶ£¬Èç³É¹¦»òʧ°ÜµÈ 3.3¡®Á¬½Ó½ø/Ïß³ÌÄ£¿é¡¯½øÐкóÐøµÄÇåÀí¹¤×÷£¬²¢¼ÌÐøµÈ´ýÇëÇó»ò¶Ï¿ªÓë¿Í»§¶ËµÄÁ¬½Ó һͼС×ܽá

Èý¡¢SQL½âÎö˳Ðò ½ÓÏÂÀ´ÔÙ×ßÒ»²½£¬ÈÃÎÒÃÇ¿´¿´Ò»ÌõSQLÓï¾äµÄǰÊÀ½ñÉú¡£ Ê×ÏÈ¿´Ò»ÏÂʾÀýÓï¾ä
SELECT DISTINCT
< select_list >
FROM < left_table > < join_type >
JOIN < right_table > ON < join_condition
>
WHERE < where_condition >
GROUP BY < group_by_list >
HAVING < having_condition >
ORDER BY < order_by_condition >
LIMIT < limit_number > |
È»¶øËüµÄÖ´ÐÐ˳ÐòÊÇÕâÑùµÄ
FROM <left_table>
ON <join_condition>
<join_type> JOIN <right_table>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
SELECT
DISTINCT <select_list>
ORDER BY <order_by_condition>
LIMIT <limit_number> |
ËäÈ»×Ô¼ºÃ»Ïëµ½ÊÇÕâÑùµÄ£¬²»¹ýÒ»¿´»¹ÊǺÜ×ÔÈ»ºÍгµÄ£¬´ÓÄÄÀï»ñÈ¡£¬²»¶ÏµÄ¹ýÂËÌõ¼þ£¬ÒªÑ¡ÔñÒ»Ñù»ò²»Ò»ÑùµÄ£¬ÅźÃÐò£¬ÄDzÅÖªµÀҪȡǰ¼¸ÌõÄØ¡£ ¼ÈÈ»Èç´ËÁË£¬ÄǾÍÈÃÎÒÃÇÒ»²½²½À´¿´¿´ÆäÖеÄϸ½Ú°É¡£ ×¼±¸¹¤×÷ 1.´´½¨²âÊÔÊý¾Ý¿â
create database
testQuery |
2.´´½¨²âÊÔ±í
CREATE TABLE
table1
(
uid VARCHAR(10) NOT NULL,
name VARCHAR(10) NOT NULL,
PRIMARY KEY(uid)
)ENGINE=INNODB DEFAULT CHARSET=UTF8;
CREATE TABLE table2
(
oid INT NOT NULL auto_increment,
uid VARCHAR(10),
PRIMARY KEY(oid)
)ENGINE=INNODB DEFAULT CHARSET=UTF8; |
3.²åÈëÊý¾Ý
INSERT INTO
table1(uid,name) VALUES('aaa','mike'),('bbb','jack'),('ccc','mike'),('ddd','mike');
INSERT INTO table2(uid) VALUES('aaa'),('aaa'),('bbb'),('bbb'),('bbb'),('ccc'),(NULL); |
4.×îºóÏëÒªµÄ½á¹û
SELECT
a.uid,
count(b.oid) AS total
FROM
table1 AS a
LEFT JOIN table2 AS b ON a.uid = b.uid
WHERE
a. NAME = 'mike'
GROUP BY
a.uid
HAVING
count(b.oid) < 2
ORDER BY
total DESC
LIMIT 1; |
£¡ÏÖÔÚ¿ªÊ¼SQL½âÎöÖ®Âðɣ¡ 1. FROM µ±Éæ¼°¶à¸ö±íµÄʱºò£¬×ó±ß±íµÄÊä³ö»á×÷ΪÓұ߱íµÄÊäÈ룬֮ºó»áÉú³ÉÒ»¸öÐéÄâ±íVT1¡£ (1-J1)µÑ¿¨¶û»ý
¼ÆËãÁ½¸öÏà¹ØÁª±íµÄµÑ¿¨¶û»ý(CROSS JOIN) £¬Éú³ÉÐéÄâ±íVT1-J1¡£
mysql> select
* from table1,table2;
+-----+------+-----+------+
| uid | name | oid | uid |
+-----+------+-----+------+
| aaa | mike | 1 | aaa |
| bbb | jack | 1 | aaa |
| ccc | mike | 1 | aaa |
| ddd | mike | 1 | aaa |
| aaa | mike | 2 | aaa |
| bbb | jack | 2 | aaa |
| ccc | mike | 2 | aaa |
| ddd | mike | 2 | aaa |
| aaa | mike | 3 | bbb |
| bbb | jack | 3 | bbb |
| ccc | mike | 3 | bbb |
| ddd | mike | 3 | bbb |
| aaa | mike | 4 | bbb |
| bbb | jack | 4 | bbb |
| ccc | mike | 4 | bbb |
| ddd | mike | 4 | bbb |
| aaa | mike | 5 | bbb |
| bbb | jack | 5 | bbb |
| ccc | mike | 5 | bbb |
| ddd | mike | 5 | bbb |
| aaa | mike | 6 | ccc |
| bbb | jack | 6 | ccc |
| ccc | mike | 6 | ccc |
| ddd | mike | 6 | ccc |
| aaa | mike | 7 | NULL |
| bbb | jack | 7 | NULL |
| ccc | mike | 7 | NULL |
| ddd | mike | 7 | NULL |
+-----+------+-----+------+
rows in set (0.00 sec) |
(1-J2)ON¹ýÂË »ùÓÚÐéÄâ±íVT1-J1ÕâÒ»¸öÐéÄâ±í½øÐйýÂË£¬¹ýÂ˳öËùÓÐÂú×ãON ν´ÊÌõ¼þµÄÁУ¬Éú³ÉÐéÄâ±íVT1-J2¡£
×¢Ò⣺ÕâÀïÒòΪÓï·¨ÏÞÖÆ£¬Ê¹ÓÃÁË'WHERE'´úÌæ£¬´ÓÖжÁÕßÒ²¿ÉÒÔ¸ÐÊܵ½Á½ÕßÖ®¼ä΢ÃîµÄ¹ØÏµ£»
mysql> SELECT
-> *
-> FROM
-> table1,
-> table2
-> WHERE
-> table1.uid = table2.uid
-> ;
+-----+------+-----+------+
| uid | name | oid | uid |
+-----+------+-----+------+
| aaa | mike | 1 | aaa |
| aaa | mike | 2 | aaa |
| bbb | jack | 3 | bbb |
| bbb | jack | 4 | bbb |
| bbb | jack | 5 | bbb |
| ccc | mike | 6 | ccc |
+-----+------+-----+------+
rows in set (0.00 sec) |
(1-J3)Ìí¼ÓÍⲿÁÐ
Èç¹ûʹÓÃÁËÍâÁ¬½Ó(LEFT,RIGHT,FULL)£¬Ö÷±í£¨±£Áô±í£©ÖеIJ»·ûºÏONÌõ¼þµÄÁÐÒ²»á±»¼ÓÈëµ½VT1-J2ÖУ¬×÷ΪÍⲿÐУ¬Éú³ÉÐéÄâ±íVT1-J3¡£
mysql> SELECT
-> *
-> FROM
-> table1 AS a
-> LEFT OUTER JOIN table2 AS b ON a.uid = b.uid;
+-----+------+------+------+
| uid | name | oid | uid |
+-----+------+------+------+
| aaa | mike | 1 | aaa |
| aaa | mike | 2 | aaa |
| bbb | jack | 3 | bbb |
| bbb | jack | 4 | bbb |
| bbb | jack | 5 | bbb |
| ccc | mike | 6 | ccc |
| ddd | mike | NULL | NULL |
+-----+------+------+------+
rows in set (0.00 sec) |
ÏÂÃæ´ÓÍøÉÏÕÒµ½Ò»ÕźÜÐÎÏóµÄ¹ØÓÚ¡®SQL JOINS'µÄ½âÊÍͼ£¬ÈçÈôÇÖ·¸ÁËÄãµÄÈ¨Òæ£¬ÇëÀÍ·³¸æÖªÉ¾³ý£¬Ð»Ð»¡£

2. WHERE ¶ÔVT1¹ý³ÌÖÐÉú³ÉµÄÁÙʱ±í½øÐйýÂË£¬Âú×ãWHERE×Ó¾äµÄÁб»²åÈëµ½VT2±íÖС£ ×¢Ò⣺ ´ËʱÒòΪ·Ö×飬²»ÄÜʹÓþۺÏÔËË㣻Ҳ²»ÄÜʹÓÃSELECTÖд´½¨µÄ±ðÃû£» ÓëONµÄÇø±ð£º Èç¹ûÓÐÍⲿÁУ¬ONÕë¶Ô¹ýÂ˵ÄÊǹØÁª±í£¬Ö÷±í£¨±£Áô±í£©»á·µ»ØËùÓеÄÁУ» Èç¹ûûÓÐÌí¼ÓÍⲿÁУ¬Á½ÕßµÄЧ¹ûÊÇÒ»ÑùµÄ£» Ó¦Ó㺠¶ÔÖ÷±íµÄ¹ýÂËÓ¦¸Ã·ÅÔÚWHERE£»
¶ÔÓÚ¹ØÁª±í£¬ÏÈÌõ¼þ²éѯºóÁ¬½ÓÔòÓÃON£¬ÏÈÁ¬½ÓºóÌõ¼þ²éѯÔòÓÃWHERE£»
mysql> SELECT
-> *
-> FROM
-> table1 AS a
-> LEFT OUTER JOIN table2 AS b ON a.uid = b.uid
-> WHERE
-> a. NAME = 'mike';
+-----+------+------+------+
| uid | name | oid | uid |
+-----+------+------+------+
| aaa | mike | 1 | aaa |
| aaa | mike | 2 | aaa |
| ccc | mike | 6 | ccc |
| ddd | mike | NULL | NULL |
+-----+------+------+------+
rows in set (0.00 sec) |
3. GROUP BY Õâ¸ö×Ó¾ä»á°ÑVT2ÖÐÉú³ÉµÄ±í°´ÕÕGROUP BYÖеÄÁнøÐзÖ×é¡£Éú³ÉVT3±í¡£ ×¢Ò⣺ Æäºó´¦Àí¹ý³ÌµÄÓï¾ä£¬ÈçSELECT,HAVING£¬ËùÓõ½µÄÁбØÐë°üº¬ÔÚGROUP BYÖУ¬¶ÔÓÚûÓгöÏֵ쬵ÃÓþۺϺ¯Êý£» ÔÒò£º GROUP BY¸Ä±äÁ˶ԱíµÄÒýÓ㬽«Æäת»»ÎªÐµÄÒýÓ÷½Ê½£¬Äܹ»¶ÔÆä½øÐÐÏÂÒ»¼¶Âß¼²Ù×÷µÄÁлá¼õÉÙ£» ÎÒµÄÀí½âÊÇ£º
¸ù¾Ý·Ö×é×ֶΣ¬½«¾ßÓÐÏàͬ·Ö×é×ֶεļǼ¹é²¢³ÉÒ»Ìõ¼Ç¼£¬ÒòΪÿһ¸ö·Ö×éÖ»ÄÜ·µ»ØÒ»Ìõ¼Ç¼£¬³ý·ÇÊDZ»¹ýÂ˵ôÁË£¬¶ø²»ÔÚ·Ö×é×Ö¶ÎÀïÃæµÄ×ֶοÉÄÜ»áÓжà¸öÖµ£¬¶à¸öÖµÊÇÎÞ·¨·Å½øÒ»Ìõ¼Ç¼µÄ£¬ËùÒÔ±ØÐëͨ¹ý¾ÛºÏº¯Êý½«ÕâЩ¾ßÓжàÖµµÄÁÐת»»³Éµ¥Öµ£»
mysql> SELECT
-> *
-> FROM
-> table1 AS a
-> LEFT OUTER JOIN table2 AS b ON a.uid = b.uid
-> WHERE
-> a. NAME = 'mike'
-> GROUP BY
-> a.uid;
+-----+------+------+------+
| uid | name | oid | uid |
+-----+------+------+------+
| aaa | mike | 1 | aaa |
| ccc | mike | 6 | ccc |
| ddd | mike | NULL | NULL |
+-----+------+------+------+
rows in set (0.00 sec) |
4. HAVING
Õâ¸ö×Ó¾ä¶ÔVT3±íÖеIJ»Í¬µÄ×é½øÐйýÂË£¬Ö»×÷ÓÃÓÚ·Ö×éºóµÄÊý¾Ý£¬Âú×ãHAVINGÌõ¼þµÄ×Ӿ䱻¼ÓÈëµ½VT4±íÖС£
mysql> SELECT
-> *
-> FROM
-> table1 AS a
-> LEFT OUTER JOIN table2 AS b ON a.uid = b.uid
-> WHERE
-> a. NAME = 'mike'
-> GROUP BY
-> a.uid
-> HAVING
-> count(b.oid) < 2;
+-----+------+------+------+
| uid | name | oid | uid |
+-----+------+------+------+
| ccc | mike | 6 | ccc |
| ddd | mike | NULL | NULL |
+-----+------+------+------+
rows in set (0.00 sec) |
5. SELECT Õâ¸ö×Ó¾ä¶ÔSELECT×Ó¾äÖеÄÔªËØ½øÐд¦Àí£¬Éú³ÉVT5±í¡£ (5-J1)¼ÆËã±í´ïʽ ¼ÆËãSELECT ×Ó¾äÖеıí´ïʽ£¬Éú³ÉVT5-J1 (5-J2)DISTINCT ѰÕÒVT5-1ÖеÄÖØ¸´ÁУ¬²¢É¾µô£¬Éú³ÉVT5-J2
Èç¹ûÔÚ²éѯÖÐÖ¸¶¨ÁËDISTINCT×Ӿ䣬Ôò»á´´½¨Ò»ÕÅÄÚ´æÁÙʱ±í£¨Èç¹ûÄÚ´æ·Å²»Ï£¬¾ÍÐèÒª´æ·ÅÔÚÓ²ÅÌÁË£©¡£ÕâÕÅÁÙʱ±íµÄ±í½á¹¹ºÍÉÏÒ»²½²úÉúµÄÐéÄâ±íVT5ÊÇÒ»ÑùµÄ£¬²»Í¬µÄÊǶԽøÐÐDISTINCT²Ù×÷µÄÁÐÔö¼ÓÁËÒ»¸öΨһË÷Òý£¬ÒÔ´ËÀ´³ýÖØ¸´Êý¾Ý¡£
mysql> SELECT
-> a.uid,
-> count(b.oid) AS total
-> FROM
-> table1 AS a
-> LEFT OUTER JOIN table2 AS b ON a.uid = b.uid
-> WHERE
-> a. NAME = 'mike'
-> GROUP BY
-> a.uid
-> HAVING
-> count(b.oid) < 2;
+-----+-------+
| uid | total |
+-----+-------+
| ccc | 1 |
| ddd | 0 |
+-----+-------+
rows in set (0.00 sec) |
6.ORDER BY ´ÓVT5-J2ÖеıíÖУ¬¸ù¾ÝORDER BY ×Ó¾äµÄÌõ¼þ¶Ô½á¹û½øÐÐÅÅÐò£¬Éú³ÉVT6±í¡£ ×¢Ò⣺
Ψһ¿ÉʹÓÃSELECTÖбðÃûµÄµØ·½£»
mysql> SELECT
-> a.uid,
-> count(b.oid) AS total
-> FROM
-> table1 AS a
-> LEFT OUTER JOIN table2 AS b ON a.uid = b.uid
-> WHERE
-> a. NAME = 'mike'
-> GROUP BY
-> a.uid
-> HAVING
-> count(b.oid) < 2
-> ORDER BY
-> total DESC;
+-----+-------+
| uid | total |
+-----+-------+
| ccc | 1 |
| ddd | 0 |
+-----+-------+
rows in set (0.00 sec) |
7.LIMIT LIMIT×Ó¾ä´ÓÉÏÒ»²½µÃµ½µÄVT6ÐéÄâ±íÖÐÑ¡³ö´ÓÖ¸¶¨Î»ÖÿªÊ¼µÄÖ¸¶¨ÐÐÊý¾Ý¡£ ×¢Ò⣺ offsetºÍrowsµÄÕý¸º´øÀ´µÄÓ°Ï죻 µ±Æ«ÒÆÁ¿ºÜ´óʱЧÂÊÊǺܵ͵ģ¬¿ÉÒÔÕâô×ö£º ²ÉÓÃ×Ó²éѯµÄ·½Ê½ÓÅ»¯£¬ÔÚ×Ó²éѯÀïÏÈ´ÓË÷Òý»ñÈ¡µ½×î´óid£¬È»ºóµ¹ÐòÅÅ£¬ÔÙÈ¡NÐнá¹û¼¯
²ÉÓÃINNER JOINÓÅ»¯£¬JOIN×Ó¾äÀïÒ²ÓÅÏÈ´ÓË÷Òý»ñÈ¡IDÁÐ±í£¬È»ºóÖ±½Ó¹ØÁª²éѯ»ñµÃ×îÖÕ½á¹û
mysql> SELECT
-> a.uid,
-> count(b.oid) AS total
-> FROM
-> table1 AS a
-> LEFT JOIN table2 AS b ON a.uid = b.uid
-> WHERE
-> a. NAME = 'mike'
-> GROUP BY
-> a.uid
-> HAVING
-> count(b.oid) < 2
-> ORDER BY
-> total DESC
-> LIMIT 1;
+-----+-------+
| uid | total |
+-----+-------+
| ccc | 1 |
+-----+-------+
row in set (0.00 sec) |
ÖÁ´ËSQLµÄ½âÎöÖ®ÂþͽáÊøÁË£¬ÉÏͼ×ܽáһϣº
βÉù£º àÅ£¬µ½ÕâÀïÕâÒ»´ÎµÄÉîÈëÁ˽âÖ®ÂþͲ¶àÕæµÄ½áÊøÁË£¬ËäȻҲ²»ÊǺÜÉîÈ룬ֻÊÇһЩ¶«Î÷½«Æä¶«Æ´Î÷´ÕÔÚÒ»Æð¶øÒÑ£¬²Î¿¼ÁËһЩÒÔǰ¿´¹ýµÄÊé¼®£¬´óʦ֮±Ê¹ûÈ»²»Ò»Ñù¡£¶øÇÒÔÚÕâ¹ý³ÌÖÐÒ²ÊÇgetµ½ÁËÂù¶à¶«Î÷µÄ£¬×îÖØÒªµÄÊǸü½øÒ»²½Òâʶµ½£¬¼ÆËã»úÈí¼þÊÀ½çµÄºê´óѽ~ ÁíÓÉÓÚ±¾È˲ÅÊèѧdz£¬ÆäÖÐÄÑÃâ´æÔÚç¢Â©´íÎóÖ®´¦£¬Èô·¢ÏÖÀÍ·³¸æÖªÐ޸쬏Ðл~ |