我有一张这样的 table
create table Bids (
b_id INT not null auto_increment PRIMARY KEY,
u_id integer not null,
foreign key (u_id) references Users(u_id),
i_id integer not null,
foreign key (i_id) references Items(i_id),
bid_amount long,
}
然后我运行查询
Select * from Bids Where bid_amount in ( Select MAX(bid_amount) from Bids)
and i_id=1
但是当我选择全部时,它不是正确的值,它应该是 1050 如下图
我的查询发生了什么?
最佳答案
您将 bid_amount
存储为文本,这不是一个好的做法,我建议您更改结构并分配适当的整数/ double 类型。现在您需要将列转换为数字,然后才能得到正确的结果。
快速破解不是解决方案
Select * from Bids
Where bid_amount in ( Select MAX(bid_amount + 0) from Bids)
and i_id=1
Select * from Bids
Where bid_amount in ( Select MAX(CAST(bid_amount as DECIMAL(9,2))) from Bids)
and i_id=1
或者
Select * from Bids
Where bid_amount in ( Select MAX(CONVERT(bid_amount ,UNSIGNED INTEGER) ) from Bids)
and i_id=1
关于mysql - 选择查询未返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50269926/