表格查询自定义语句问题 返回

SqlSugar 处理中
4 440
该叫什么 hp9999 发布于2026/4/16
悬赏:0 飞吻

[{

    "ConditionalList": [{

                "Key": -1,

                "Value": {

                    "FieldName": "RpmCfgs.Rpm",

                    "FieldValue": "2000",

                    "ConditionalType": 0

                }

            }, {

                "Key": 1,

                "Value": {

                    "FieldName": "RpmCfgs.Rpm",

                    "FieldValue": "0",

                    "ConditionalType": 2

                }

            }]

}]

image.png
把2个连续的改为自定义sql后,这个key好像未起作用。连接符没有了。第二个使用正常构造的话,key又会起作用。

热忱回答4

  • hp9999 hp9999 VIP0
    2026/4/16

    经测试自定义sql,不考虑key,要自己判断的呀?

    0 回复
  • hp9999 hp9999 VIP0
    2026/4/16

    0 回复
  • fate sta fate sta VIP0
    2026/4/17

    这个我看一下。

    0 回复
  • hp9999 hp9999 VIP0
    1个月前

    @fate sta 
    用ai检查了问题

    Bug 确认

    是的,这是 SqlSugar 的 bug。 在使用 List<IConditionalModel> 生成 SQL 时,当条件列表中包含 FieldNameSql(自定义SQL)条件时,SqlSugar 不会在该条件与后续条件之间自动添加 AND 连接符。

    根本原因

    SqlSugar 在扁平 ConditionalModel 列表格式下,对 FieldNameSql 类型的条件(FieldName = UtilMethods.FieldNameSql()ConditionalType = Equal)的处理方式是直接将 FieldValue 作为原始 SQL 插入,不会在前后自动添加 AND/OR 连接符。而普通条件之间会自动添加 AND。

    具体行为:

    条件组合SqlSugar 行为
    Normal + Normal自动加 AND
    FieldNameSql + Normal不加 AND
    Normal + FieldNameSql不加 AND
    FieldNameSql + FieldNameSql不加 AND


    0 回复