inspired by
初步完成SelectQuery