The fight started around 3.40am at the Le Loft, a popular dance club on the Place Bel-Air, in the centre of the Vaud capital, cantonal police said in a statement.
Security guards from Le Loft contacted city police, who asked for reinforcements and received support from the cantonal force to quell the St. Patrick’s Day melee.
The group of 100 to 150 people involved in the fight moved outside the club to the Place Bel Air and the Rue des Terreaux, where participants threw bottles at the officers, police said.
One man implicated in the fisticuffs used pepper spray against a policeman and was subsequently arrested.
Police established security to a perimeter around the nightclub while various groups scattered to different parts of the downtown area.
However, about an hour later another fight broke out, involving some of the same individuals, in an underground passage at the city train station.
Members of the local gendarmerie and city police broke up the free-for-all, police said.
Three people were injured, including two individuals who were transported to the university hospital centre (CHUV) for treatment.
A total of three people were arrested, two of whom were released.
Justice authorities have launched a criminal investigation into the activities of the man who sprayed a police officer for “violence against a public official”.
A total of 50 police officers were called to deal with the fight.