MYSQL如何根据变量的值来选择字段进行查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL如何根据变量的值来选择字段进行查询相关的知识,希望对你有一定的参考价值。
我想查询数据库的某几个字段,但是想查询的字段是由复选框选择后把值传递给变量,由这些变量决定查询什么字段,如何将变量值传递给字段用SQL语句实现.例如数据库中字段是A,B,C,D,E.我通过选择只查询B这项,B是由变量传递过来的,select(变量)from table ,但是这样写是不行的,如何做
我的想法是,你可以先用select * from table where ... 把所有字段的值都取出来,然后再单独显示你要查询的项 参考技术A 用动态语句可以,给个示例你参考下:/*建立存储过程:*/
create procedure pro_getresult(in i_field varchar(500))
begin
set @str=concat('select ',i_field,' from table_name');
prepare stmt1 from @str;
execute stmt1;
deallocate prepare stmt1;
end
/*动态输入要查询的字段列表参数访问:*/
call pro_getresult('A,B,C,D');
call pro_getresult('A,B');
call pro_getresult('A'); 参考技术B 是用php写的么?
$sql="select ".$变量名." from table"本回答被提问者采纳 参考技术C 你的变量的值和数据库中字段B,是不是一样的,名字要一样才能查询出来。 参考技术D 你后台用的什么语言?
Mongoose - 如何通过另一个字段的值来增加一个字段
【中文标题】Mongoose - 如何通过另一个字段的值来增加一个字段【英文标题】:Mongoose - How to increment a field by value of another field 【发布时间】:2021-06-25 06:57:33 【问题描述】:我是猫鼬 ODM 的新手。我正在尝试通过另一个字段的值来增加一个值。以下是我尝试过的:
const deletedCartItem = await Cart.findOneAndUpdate(
sessionId: req.session.sessionId, "productInfo.productId": product_id ,
$inc:
checkoutAmount: "$productInfo.totalAmount"//totalAmount is a nested field here.
,
$pull:
productInfo: productId: product_id ,
,
,
new: true, useFindAndModify: false
);
我的收藏架构如下所示:
const cartSchema = mongoose.Schema(
sessionId:
type: String,
unique: true,
,
checkoutAmount:
type: Number,
,
orderStatus:
type: String,
default: "INCART"
,
productInfo: [
productId:
type: String,
required: true,
unique: true,
,
quantity:
type: Number,
required: true,
,
price:
type: Number,
,
totalAmount:
type: Number,
],
);
我得到的错误是 -
我在这里遗漏了什么吗? 提前致谢!
【问题讨论】:
您认为提供的答案中是否有某些内容无法解决您的问题?如果是这样,请对答案发表评论,以澄清究竟需要解决哪些尚未解决的问题。如果它确实回答了您提出的问题,请注意Accept your Answers您提出的问题 【参考方案1】:更新不允许将内部字段的值用于其他字段,您必须从 MongoDB 4.2 开始使用 update with aggregation pipeline,
$reduce
迭代 productInfo
的外观并检查条件是否 productId
匹配然后返回其 totalAmount
,
$add
增加 checkoutAmount
与从上面返回的 totalAmount
$reduce
操作
$filter
迭代productInfo
的循环并过滤不匹配productId
的元素
const deletedCartItem = await Cart.findOneAndUpdate(
sessionId: req.session.sessionId, "productInfo.productId": product_id ,
[
$set:
checkoutAmount:
$add: [
"$checkoutAmount",
$reduce:
input: "$productInfo",
initialValue: 0,
in:
$cond: [
$eq: ["$$this.productId", product_id] ,
"$$this.totalAmount",
"$$value"
]
]
,
productInfo:
$filter:
input: "$productInfo",
cond: $ne: ["$$this.productId", product_id]
],
new: true, useFindAndModify: false
);
Playground
【讨论】:
以上是关于MYSQL如何根据变量的值来选择字段进行查询的主要内容,如果未能解决你的问题,请参考以下文章