If a PATCH request is made with a VALID payload, but the values in the payload are exactly the same as those in db, should it return 200 or 400 or other status code?
You have to return 4xx HTTP status code if there is an error.
In your case, there is not so I think that 200 is the best response.
The RFC says when you have to return an error status code.