UPDATE: OK, now I think I now what you're trying to do. You want each row in the first table to match with at most one row in the second table. If you are using MS SQL, Oracle or PostgreSQL then you can use ROW_NUMBER to uniquify your rows:
SELECT Field1 AS newfield, Field2, field4
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2) AS rn
FROM Table1) AS T1
JOIN (SELECT *, ROW_NUMBER() OVER (PARTITION BY field3 ORDER BY field4) AS rn
FROM Table2) AS T2
ON T1.Field1 = T2.field3 AND T1.rn = T2.rn
ORDER BY Field1
Result:
'AA', 20, 20
'AA', 20, 20
'AC', 13, 13
If you are using MySQL you can simulate ROW_NUMBER using variables:
SELECT Field1 AS newfield, Field2, field4
FROM
(SELECT
Field1,
Field2,
@rn := CASE WHEN @last = Field1 THEN @rn + 1 ELSE 1 END AS rn,
@last := Field1
FROM Table1, (SELECT @rn := 0, @last = NULL) AS vars
ORDER BY Field1) AS T1
JOIN
(SELECT
Field3,
Field4,
@rn := CASE WHEN @last = Field3 THEN @rn + 1 ELSE 1 END AS rn,
@last := Field3
FROM Table2, (SELECT @rn := 0, @last = NULL) AS vars
ORDER BY Field3) AS T2
ON T1.Field1 = T2.field3 AND T1.rn = T2.rn
ORDER BY Field1
Result:
'AA', 20, 20
'AA', 20, 20
'AC', 13, 13