c# - IF 语句查询语法错误

标签 c# mysql

我正在尝试用单个 SQL 查询替换 foreach 语句,我想更改的代码如下所示:

 this.Settings = new List<Setting>()
        {
            // Write all the settings from the VB
            new Setting() { Name = "NOOFORDERS", Value = null },
            new Setting() { Name = "ORDNVGREQ", Value = null },
            new Setting() { Name = "IncWendsDel", Value = null },
            new Setting() { Name = "AUTOEMAIL_INVOICE", Value = null },
            new Setting() { Name = "REQEMAIL_INVOICE", Value = null },
            new Setting() { Name = "REQEMAIL_SALES", Value = null },
            new Setting() { Name = "REQEMAIL_PICKSLIP", Value = null },
            new Setting() { Name = "REQEMAIL_DESPATCH", Value = null },
            new Setting() { Name = "CARRPARTSHIP", Value = null },
            new Setting() { Name = "DELNOTEREQ", Value = null },
            new Setting() { Name = "REQ_CARRPARTSHIP", Value = null },
            new Setting() { Name = "BUDGETREQ", Value = null },
            new Setting() { Name = "PriceList", Value = null },
            new Setting() { Name = "EmployeeRenew", Value = null },
            new Setting() { Name = "Warehouse", Value = null },
            new Setting() { Name = "EmployeeDetails", Value = null },
        };
var value = this.db.tblbus_setvalues.Where( x => x.SettingID == setting.Name && x.BusinessCode == this.Business.BusinessCode ).FirstOrDefault().Value;
switch (value.GetType())
{
    case typeof(bool):
        (value) ? setting.Value = "true" : setting.Value = "false";
        break;
    default:
        setting.Value = value.ToString();
        break;
    }
    if ( !string.IsNullOrEmpty(setting.Value) ) setting.Value = this.db.tblbus_settings.Where( x => x.SettingID == setting.Name ).FirstOrDefault().Default.ToString();

我想用以下代码替换上面代码的 SQL:

SELECT t1.SettingID, t2.Value, t1.Default
FROM `tblbus_settings` t1
LEFT JOIN `tblbus_setvalues` t2
ON t1.SettingID = t2.SettingID
WHERE `BusinessCode` = "XXX" // Dependency
AND t1.`BusType` = "CUS"

谁能帮我在这个 SQL 查询上写一个 IF 语句,它只会在 t1.Defaultnullt2.Value >?

我试过这样的事情:

IF(t2.value == NULL) { t1.Default }
ELSE { t2.Value }

但它们都给我 SQL 语法错误。

最佳答案

您可以使用 coalesce返回列表中第一个非 NULL 值的函数,如果没有非 NULL 值则返回 NULL:

 SELECT t1.SettingID, COALESCE(t2.Value, t1.Default) FROM ...

关于c# - IF 语句查询语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36627101/

相关文章:

javascript - 如何创建一个允许 2 个玩家在 Php/Ajax 中互相战斗的方法?

c# - 为什么 Application.Exit 无法工作?

c# - GetPrintJobInfoCollection() 有时会出现异常

PHP、MYSQL,根据 3 个下拉列表中的所有值为 true 选择结果

phpinfo() 显示 MySQL,PMA 显示 MariaDB

python - 如何按特定规则排序 django

mysql - 如何过滤select中的空值?

c# - 单元测试难题 : OleDbCommand

c# - 登录到 HTTPS 强制门户

c# - 收集仍在范围内的对象 - GC.Collect