SQL SELECT只是特定列中的一个字段?

时间:2014-03-11 15:20:00

标签: sql

我有一个名为Car List的表:在表中有一个名为Car的列,另一个名为Shop的列,另一个名为Price。

简单来说,它告诉不同商店(商店1,商店2,商店3)的每辆车(梅赛德斯,雷诺,菲亚特......等)的价格。

我正在尝试写一个查询,以查看所有商店中只有梅赛德斯的价格......

下面的语法不起作用。

SELECT  Car, Shop, Prices
WHERE Car = Mercedes
FROM Car List

3 个答案:

答案 0 :(得分:1)

SELECT Car, Shop, Prices 
FROM `Car List`
WHERE Car = 'Mercedes'

根据您的数据库引擎,您需要以不同方式转义包含空格的表名。

答案 1 :(得分:1)

定义“它不起作用”。当然有一条错误信息正试图帮助你吗?

例如,Car的数据类型是什么?根据尝试的比较,它听起来像是一个字符串。在这种情况下,要比较的值需要用引号括起来:

SELECT Car, Shop, Prices WHERE Car = 'Mercedes' FROM Car List

否则查询将在表中查找名为“Mercedes”的列,该列不存在。

此外,您的条款无序。订单应为SELECT FROM WHERE而非SELECT WHERE FROM(至少,我从未看到后者使用):

SELECT Car, Shop, Prices FROM Car List WHERE Car = 'Mercedes'

此外,您的表名中还有一个空格。一般来说,最好避免这种情况,但是如果你必须使用空格,那么为了让数据库解析查询,你需要告诉它这两个单词形成一个单一的标识符。在SQL Server中,这是用方括号完成的:

SELECT Car, Shop, Prices FROM [Car List] WHERE Car = 'Mercedes'

如果您正在使用其他数据库引擎,则可能需要使用其他封闭标准。例如,MySQL使用反引号:

SELECT Car, Shop, Prices FROM `Car List` WHERE Car = 'Mercedes'

在这方面继续,通常很好的做法是将任何数据库对象标识符括在方括号中,只是为了显式和一致(使用数据库引擎使用的任何标识符):

SELECT [Car], [Shop], [Prices] FROM [Car List] WHERE [Car] = 'Mercedes'

答案 2 :(得分:0)

SELECT Car, Shop, Prices
FROM "Car List"
WHERE UPPER(Car) LIKE '%MERCEDES%'

您可能需要根据您使用的RDBMS更改双引号。此外,由于多种原因,此解决方案比同等解决方案慢,但如果您的数据混乱,它会更兼容。