我的SQL语句中哪里出错了?

时间:2016-01-21 00:06:37

标签: c# sql

我希望通过过滤4列来从数据库中获取数据。第一列名称为Money(金额),第二列为Currency。数据库中还有两列具有相同的定义,例如:Money2Currency2

所以我希望得到Money大于100且Currency为美元的所有记录,但另外我想得到Money2大于200且{{{{{ 1}}是欧元。

我有以下查询,但不幸的是它没有给出第二个查询的结果。

代码:

Currency2

我在哪里弄错了?

4 个答案:

答案 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中的空格是有意的;没有它,所以不想发布此答案)