mysql - 从包含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);
}
解决方案
每个值之一应在成分 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
问号应替换为参数的值(绑定参数的语法可能因数据库而异)。
推荐阅读
- angular - url中的多个参数不起作用Angular 6
- python - 使用带有 Pandas 的 Google 表单替代已弃用的方法
- dart - Flutter Await 回调不给出任何响应
- json - Flutter JSON 重复索引
- python - Python 对具有不同名称的相同项目进行分组
- mysql - 如何为社交应用实现可扩展的通知系统?
- c# - 将 StorageFile 转换为字符串
- azure-ad-b2c - Azure B2C 检查用户是否存在?
- angular - xmpp 消息列表器中的问题,connection.addHandler() 不调用子组件(带有 angular6 的 xmpp)
- svn - svn add * --force 不添加递归