Craving fish usually means that the body needs more protein. A craving can be either mental or physical, however. Many cravings mean that the body needs a specific nutrient or mineral.
A fish craving does not necessarily mean that the body needs fish in particular. Adding more protein to a person's diet should eliminate most fish cravings. People who work out regularly or have a lot of muscle mass need more protein in order to sustain their bodies, so a craving for fish is expected if the protein levels are not high enough. If the craving for fish accompanies a craving for other proteins, such as chicken or beef, then protein deficiency is the most likely reason.
Alternatively, if there is a specific type of fish that is being craved, the body is probably lacking other nutrients. For example, a craving for oily or salty fish, such as sardines, may mean the body needs more calcium or sodium. These cravings can be satisfied with alternative foods to fish if there is none available or the person wants a healthier alternative. Eggs supply protein, cheese provides calcium and pickles have a large amount of salt.
There is always the possibility that cravings can be mental, such as a psychological dependency on comfort foods. This kind of craving is not fixed with substitutions and may be more difficult to satisfy.