《百家姓》相传由北宋初年吴越钱塘地区的一个书生所编撰。书中将常见的姓氏编成四字一句、两句一韵的短文,读来琅琅上口,易学好记,流传广泛,影响深远。其与后来的《三字经》、《千字文》并称“三百千”,是中国古代幼儿的启蒙读物。
书中之所以按照“赵钱孙李”的顺序排列,并非依据各姓氏人口数量,而是受到当时政治的影响。据宋人王明清考证,《百家姓》之所以将赵排在第一位,乃是因为当时宋朝皇帝为赵匡胤,赵乃国姓。而在宋朝建国之初,还另有政权并存。浙江有称王吴越国的钱镠,另外还有定都金陵的南唐后主李煜,所以钱、李二姓也被排在了前面。而据说编写《百家姓》的书生是钱塘人士,就将吴越王钱镠的正妃的孙姓排在了李姓之前,最终形成“赵钱孙李”的顺序。接下来的“周吴郑王”则都是钱镠的其他后妃的姓氏,而后面的姓氏安排都大抵受当时门第政治的影响。
在中国古代,尤其是流行世家门第政治的魏晋南北朝以 后,人们非常重视姓氏,因为它往往代表了一个人的家族地位,是一个人参加社交活动的一个重要名片。唐代曾以政治地位排出过名门八姓,彼此世世通婚。因此姓氏排序也便不可马虎半点了。当时朝臣编撰《氏族志》时,曾按旧日大族顺序在最前面分别排出“崔、卢、李、郑”四姓,惹得唐太宗很不高兴。朝臣只好按新的次序重新排列,自然,李姓被排在了第一位。而明代所编写的《千家姓》,也将朱姓排在了第一位。
需要说明的是,《百家姓》中并非只有100个姓氏,“百”只是一种泛称,并且其具体的数目在不同的朝代也有所不同。最初的《百家姓》收录了411个姓,至元代,由于连年战火,留下来的版本残缺不全,数目有所减少;明代版本则又做了增补,记录总共438姓,其中408个单姓,38个复姓;清人又进一步增补到504个,包括单姓444个,复姓60个,便是我们今天所看到的《百家姓》了。