select * from A where (A.Id in (select top 1 Uid from B where B.TypeId=1 order by newId())) or (A.Id in (select top 2 Uid from B where B.TypeId=2 order by newId()));
Ϊʲô²»È·¶¨ ÓÐʱÊÇ3 ÓÐʱÊÇ4»ò5»ò1»ò2 newId()ÿ´Î¶¼ÊDz»Ò»ÑùµÄ inÊÇÔÚÕâ¸ö¼¯ºÏÀïÃæ¡£ËùÒÔ²»È·¶¨ order by newId()-----------Ëæ»ú·µ»ØÒ»¸ö ²¹³äһϠÊÇ·µ»ØÐÐÊý²»È·¶¨ ·µ»ØµÄ½á¹ûÓÐʱºòÊÇ2/3/4/5/6ÐÐ £¬Ó¦¸Ã·µ»Ø3Ðеİ¡£¿
A.IdÔÚ±íAÖÐÊÇ·ñ´æÔÚÖØ¸´¼Ç¼? ¼ÙÈçA±íÊý¾Ý ID 1 1 2 2 2 3 ...
Èç¹ûÄãinÌõ¼þɸѡ³öÀ´UID=1£¬²éѯ½á¹û¾ÍÊÇ2ÐУ¬É¸Ñ¡³öÀ´UID=2£¬²éѯ½á¹¹¾ÍÊÇ3ÐÐ ±íA£º Id name 1 aa 2 bb 3 cc 4 dd 5 ee 6 ff 7 gg 9 hh 10 ii 11 jj 12 kk 13 ll 14 mm 15 nn NULL NULL ±í£Â£º typeID Uid 1 1 1 13 1 14 2 4 2 7 2 9 2 10 3 2 3 3 3 5 3 6 3 8 3 11 3 12 3 15 NULL NULL Â¥Ö÷ÓõÄÊÇslqserverÊý¾Ý¿â°É£¬oralce ûÓÐtopÓ÷¨µÄ£»Èç¹ûÔÚoracleÖУ¬¿ÉÒÔ¸ù¾Ýrownum À´ÏÞÖÆ£¬Èç¹ûÊÇËæ»úµÄ¿ÉÒÔ¸ù¾ÝrandomÀ´ÏÞÖÆµÄ£» Ï£Íû´ó¼Ò¶à½»Á÷£¬»¶Ó·ÃÎÊÎҵĿռä. select top 1 Uid from B where B.TypeId=1 order by newId() Óë select top 2 uid from B where B.TypeId=2 order by new
VS2008ÖÐC#²Ù×÷AccessÊý¾Ý¿â£¬ÍøÉÏÏÂÔØÁËÒ»¸öÀ࣬¿ÉÒÔÕý³£Á¬½Ó£¬¶ÁÈ¡Êý¾Ý£¬µ«ÊDzåÈëɾ³ý²Ù×÷ËÆºõÓÐÎÊÌ⣬ÒÔÏÂÊDz¿·Ö´úÂ룺 Êý¾Ý¿âÀࣺ namespace AccessDb { public class AccessDbClass { ......