我的Products
表有近10,000条记录,我希望“artist
”(varchar)列名按Firstname and Lastname
排序。在where子句中,我发送名字或姓氏的首字母。这个查询适用于少数记录但不适用于所有记录,可能是因为记录的模式?
这是我的查询
SELECT * FROM Products WHERE SUBSTRING(artist, 1, 1) Like 'C'
不归还记录......我想要的方式......桌子(艺术家)专栏的记录很少
Comtesse Mathilde duMonceau de Bergendael
Mulholland, S.J.
Cleminson
NULL
Samuel Jackson
答案 0 :(得分:1)
您的LIKE
条款错误。此外,你不应该在这里使用LIKE
,因为你只是用一个字母过滤:
.... WHERE LEFT(artist, 1) = 'C'
编辑 LEFT
实际上比SUBSTRING
更快。
此外,您不能指望任何不以C
开头的内容,因为您明确只要求以C
开头的条目。
我猜你真正需要的是以下内容:
.... WHERE LEFT(FirstName, 1) = 'C' OR LEFT(LastName, 1) = 'C' ORDER BY LastName, Firstname
如果您只有Artist
列,事情会变得复杂,因为您实际上做需要使用LIKE
,这会让事情变得非常缓慢
.... WHERE Artist LIKE `%C%`
返回任何艺术家,其名称在名称中的任何位置都包含C
。这也将返回这些:
Clemens Test
Test Cutler
Arachnophobia
答案 1 :(得分:0)
使用此where子句
where left(artist, 1) = 'C'
或
where artist like 'C%'