我希望通过过滤4列来从数据库中获取数据。第一列名称为Money
(金额),第二列为Currency
。数据库中还有两列具有相同的定义,例如:Money2
和Currency2
。
所以我希望得到Money
大于100且Currency
为美元的所有记录,但另外我想得到Money2
大于200且{{{{{ 1}}是欧元。
我有以下查询,但不幸的是它没有给出第二个查询的结果。
代码:
Currency2
我在哪里弄错了?
答案 0 :(得分:5)
您可能遇到了运营商优先问题。
尝试使用括号强制执行评估顺序。也可以使用.0来避免可能无意间转换为int。
SELECT * FROM DB
WHERE ((Money > 100.0 AND Currency = 'USD') OR (Money2 > 200.0 AND Currency2 = 'EUR'))
答案 1 :(得分:1)
SELECT * FROM DB
WHERE (Money > 100 AND Currency = 'USD') OR (Money2 > 200 AND Currency2 = 'EUR')
答案 2 :(得分:1)
在FROM需要成为表名后,DB听起来不像是表的名称
USE DB
SELECT *
FROM --TABLE NAME--
WHERE (Money > 100 AND Currency = 'USD') OR (Money2 > 200 AND Currency2 = 'EUR')
答案 3 :(得分:0)
你试过UNION
吗?这将允许您独立运行每个查询并帮助您缩小问题范围。
select * from db where Money > 100 and currency = 'USD'
UN ION
select * from db where Money2 > 200 AND Currency2 = 'EUR'
(请注意UNION
中的空格是有意的;没有它,所以不想发布此答案)