Ciao, tu stesso dici che devi distinguere tra thead e tbody, perché non lo fai?
Inoltre stai confondendo :first-child (a cui non devi specificare alcun parametro) con :nth-child() (dove invece è necessario specificare il parametro, che sia un numero, un'espressione o una parola chiave).
Non seguo comunque il tuo ragionamento. Se hai specificato thead come head della tabella, perché ti serve identificare il primo tr nel tbody?
Comunque:
codice:
table thead {background: Blue} /* tutto il thead, se ha un solo tr non serve utilizzare altri pseudo-elementi per identificare solo il primo tr */
table tbody tr:nth-child(even){background: Yellow} /* tr pari del tbody */
table tbody tr:nth-child(odd){background: Grey} /* tr dispari del tbody */
table tbody tr:first-child {background: Red} /* primo tr nel tbody, non so a che ti serva ma eventualmente va specificato dopo la precedente regola, altrimenti verrebbe sovrascritto */