1911年,德国作曲家阿森巴赫(德克•博加德)怀带丧女之痛来到威尼斯,想藉水城美景舒缓心情,可是一切景致所勾起的不过是更加伤心的回忆,直到在旅馆里邂逅美少年塔奇奥(伯恩•安德森),对方宛如希腊雕像般的容颜才令他浑身颤栗,浑然忘我地沉醉在激动的热情中。
其后,威尼斯城被瘟疫所笼罩,但官方刻意封锁了消息。阿森巴赫逐渐发现这一惊人的危机时,没像其他人一样慌不择路想尽快逃离,相反为了多看塔奇奥一眼,甘愿染上瘟疫命丧威尼斯。。1947年的一天,21岁的国民党军官丁嘉尧和勤务兵何福祥上街时,被一阵优美的歌声所吸引,那是丹麦民歌《只要心儿没有老》,唱歌的是一个十六、七岁的少女,她的身边还围着一群孩子。丁嘉尧着迷了。于是,他常常去找这个名叫黄小兰的姑娘,两人之间萌发了爱情。一年后,丁嘉尧随部队撤往台湾,他和黄小兰从此天各一方,一别就是52年。 2000年夏,丁嘉尧携儿子、儿媳和孙子回到家乡重庆,考察投资办厂的事宜,并试图寻找黄小兰。在沿长江考察途中,丁嘉尧终于获悉了小兰的消息,他激动万分。得知丁嘉尧从台湾回来,一群家乡在台湾的老朋友赶来相聚,这时,随着丁嘉尧小孙孙的口琴声,那首优美的丹麦民歌再一次在长江边响起,而丁嘉尧离小兰也越来越近了……。