Below is a simple example of gff3 file:

    1	T1	gene	3631	4605	.	+	.	ID=ATNG01010
    1	T1	mRNA	3631	4605	.	+	.	ID=ATNG01010.1;Parent=ATNG01010
    1	T1	exon	3631	3913	.	+	.	ID=ATNG01010:exon:1;Parent=ATNG01010.1
    1	T1	CDS	3860	3913	.	+	0	ID=ATNG01010:CDS:1;Parent=ATNG01010.1
    1	T1	exon	3996	4276	.	+	.	ID=ATNG01010:exon:2;Parent=ATNG01010.1
    1	T1	CDS	3996	4260	.	+	2	ID=ATNG01010:CDS:2;Parent=ATNG01010.1
    1	T1	exon	4486	4605	.	+	.	ID=ATNG01010:exon:3;Parent=ATNG01010.1

My question is: if we found another coding sequence (encode a different protein) range from 3752 to 3904, how should the gff3 file look like? It seems to me that the gff3 file can only allow one protein-coding gene per mRNA. If not, could anyone show me one example? Thank you!

In principle, you can define an arbitrary number of CDS per mRNA. The Parent attribute of each CDS indicates to which mRNA it belongs. If your CDS feature spans multiple lines (discontinuous features) it must have an ID to indicate lines that collectively represent the CDS. In fact, your example already contains two different protein coding sequences for mRNA 'ATNG01010.1', namely 'ATNG01010:CDS:1' and 'ATNG01010:CDS:2'. You could add a third one using the same pattern.

GFF Specification: https://github.com/The-Sequence-Ontology/Specifications/blob/master/gff3.md