是否应该将复杂的逻辑写进sql中?
假设有一个请求,可以在后台写两次查询从数据库拿到数据组装,也可以直接一次查询将所有数据放到resultMap中.到底应该怎么做,有人说sql应该简洁,有人说2次访问数据库会影响速度,请大神解答我的疑惑.
如果是一次性的，可以。如果是长期或者很多地方都要用这个逻辑，建议用代码写。

先不谈运行的效率等。SQL是人写的，也是靠人来维护的。因此从维护的角度来讨论复杂SQL的问题。

  * SQL难以测试    * 复杂SQL里嵌套了很多逻辑，每次修改后，如何测试这些逻辑的正确性呢？  * SQL难以加工变量    * 比如要对字符串做一些加工，大小写转换，正则表达式提取等。难以表达复杂的加工过程。  * SQL难以复用    * 一种逻辑在很多地方都需要用到。而开发时只能不断拷贝，以后修改时所有地方都需要修改，工作量大。如果忘记一个地方，就会导致bug出现。

建议复杂的SQL用代码来，代码可以分成模块、逻辑独立、方便测试。