c# - 我可以从同一列中选择多个值吗

标签 c# mysql sql .net ado.net

我正在尝试使用单个 MySql.Data SELECT 语句从多个行中获取值。

我尝试使用以下代码但失败了。错误说

there is a syntax error on line #

enter image description here

MySqlConnection mysqlcon = new MySqlConnection(M_str_sqlcon);

MySqlCommand mysqlcom = new MySqlCommand(
    "SELECT value FROM metatable WHERE(ProductID = 16 AND MetaKey = 'SKU') AND " +
    "SELECT value FROM metatable WHERE(ProductID = 16 AND MetaKey = 'Price') AND " +
    "SELECT value FROM metatable WHERE(ProductID = 16 AND MetaKey = 'Sold') AND " +
    "SELECT value FROM metatable WHERE(ProductID = 16 AND MetaKey = 'SoldDate')"
, mysqlcon);

MySqlDataReader r = mysqlcom.ExecuteReader(CommandBehavior.CloseConnection);

prodMeta.Add(new ProductMeta{
    ProductSKU = r.GetString(0),
    RegularPrice = r.GetDouble(1),
    SoldCount = r.GetInt32(2),
    SoldDate = r.GetString(3)
});

mysqlcon.Close();

最佳答案

与其重复无效的 Select 语句,您可以简单地使用 in像这样的运算符:

SELECT value 
FROM metatable 
WHERE ProductID = 16 AND MetaKey in ('SKU','Price', 'Sold', 'SoldDate')

而且您不需要 where 后面的括号。

关于c# - 我可以从同一列中选择多个值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60879804/

相关文章:

c# - 在 C# 程序中监视 MySQL 表的更改?

mysql - 尝试导入运行 WAMP 的 .SQL

SQL Server 2000 相当于 GROUP_CONCAT 函数

sql - Entity Framework 中的 FirstOrDefault 调用已缓存但数据库已更改

SQL 列名并将它们与 PostgreSQL 中另一个表中的行记录进行比较

c# - 在运行时更改表达式委托(delegate)主体?

java - 什么启发式使用 TPL 来确定何时使用多核

C#更新数据库

c# - 将数据插入 SQL 时出错

mysql - 如何根据另一个表中的值更新数据库记录?