SQL大于查询

时间:2018-04-12 17:49:24

标签: sql sqlite

我是sqlite的新手并希望大大扩展我的技能。我创建了一个简单的数据库,其中包含两个表,'产品'和' shopping'。

我使用以下查询来创建我的第一个表和值

sqlite> CREATE TABLE shopping(Product TEXT PRIMARY KEY, Quantity       NOT NULL);
sqlite> INSERT INTO shopping(Product, Quantity) VALUES ('Jam', 1);
sqlite> INSERT INTO shopping(Product, Quantity) VALUES ('Bread', 2);
sqlite> INSERT INTO shopping(Product, Quantity) VALUES ('Tea', 5); 
sqlite> INSERT INTO shopping(Product, Quantity) VALUES ('Cereal', 1);

以及以下查询来创建我的第二个表

sqlite> CREATE TABLE ProductData(Product TEXT PRIMARY KEY, Price NOT NULL);
sqlite> .import /home/solidsnake/Documents/ProductData.csv ProductData

此表的值,通过带有

的.csv文件导入
qlite> SELECT Product, Price
...> FROM products;

给出输出:

Jam,250
Tea,150
Cereal,120
Eggs,170
Cheese,320
Potatoes,80
Treacle,80
Bananas,100
Bread,230
Caviar,1000

我现在遇到的主要问题是我需要使用SQL查询来找出商店中哪些产品的成本高于120.

在互联网上彻底搜索后,我发现为我提供正确输入的正确查询是

SELECT * FROM "products" WHERE Price > '120';

然而,这给了我输出:

Jam,250
Tea,150
Eggs,170
Cheese,320
Potatoes,80
Treacle,80
Bread,230

如您所见,马铃薯和糖蜜的价格 80 小于 120 。输出中没有提供鱼子酱,因为它的价格 1000 ,因此看起来很奇怪。

是否有人能够指出我正确的方向,我的语法问题是什么,以及它产生错误输出的原因。

聚苯乙烯。对于冗长的帖子感到抱歉,但我想提供尽可能多的信息。我是stackoverflow的新手,并尝试按照“如何提出问题”进行操作。发布尽可能接近。

感谢。

编辑:已解决

谢谢lad2025。我最终删除了购物台并重新创建了它,并结合了您的建议。该查询现在可以完美运行。

1 个答案:

答案 0 :(得分:1)

请不要与字符串值进行比较(使用整数):

SELECT * FROM "products" WHERE Price > 120; -- instead of '120'

字符串排序不同于整数,所以' 80' > ' 120'是正确的 和' 1000' < ' 120'也是对的。

SELECT '80' > '120', 80 > 120
-- 1 0

SELECT '1000' > '120', 1000 > 120
-- 0 1

<强> DBFiddle Demo

另外定义Quantity数据类型:

CREATE TABLE shopping(Product TEXT PRIMARY KEY, Quantity   INT    NOT NULL);