我有一个名为Car List的表:在表中有一个名为Car的列,另一个名为Shop的列,另一个名为Price。
简单来说,它告诉不同商店(商店1,商店2,商店3)的每辆车(梅赛德斯,雷诺,菲亚特......等)的价格。
我正在尝试写一个查询,以查看所有商店中只有梅赛德斯的价格......
下面的语法不起作用。
SELECT Car, Shop, Prices
WHERE Car = Mercedes
FROM Car List
答案 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更改双引号。此外,由于多种原因,此解决方案比同等解决方案慢,但如果您的数据混乱,它会更兼容。