首页 > 解决方案 > 从包含mysql中某些数据的表中获取2个值

问题描述

我需要查询字符串能够找到用户按名称插入的 2 个值。

每个值之一应该是 inIngredient1和 in Ingredient2(而不是两者)。你怎么能在 sql 查询中做到这一点?

这是我迄今为止尝试过的

public static List<IngredientModel> LoadSearchRecipes(string ingredientCategory, string ingredientCategory1)
{
    // select ingredient category to show results
    string sql = @"SELECT * FROM dbo.Recipe WHERE Ingredient1 IN('" + ingredientCategory.ToString() + "," + ingredientCategory.ToString() + "') AND WHERE Ingredient1 IN('" + ingredientCategory.ToString() + "," + ingredientCategory.ToString() + "');"; 

     return SqlDataAccess.LoadData<IngredientModel>(sql);
}

标签: mysqlsqlselectwhere-clause

解决方案


每个值之一应在成分 1 和成分 2 中(不是两者)

在 MySQL 中,您可以将这两个条件评估为整数,并确保总和为1

where (ingredient1 = ?) + (ingredient2 = ?) = 1

其实我怀疑你没有使用 MySQL。这是其他数据库的标准方法:

where 
    (case when ingredient1 = ? then 1 else 0 end) 
    + (case when ingredient2 = ? then 1 else 0 end) = 1

问号应替换为参数的值(绑定参数的语法可能因数据库而异)。


推荐阅读