Sql Query如何选择某个数据并输出其余的结果

时间:2014-01-07 00:13:23

标签: mysql sql select where-clause

这是我的表

ID     Name
1      ddd
2      bbb
3      ccc
4      aaa
5      eee

是否有可能进行一个查询,该查询将选择以某个字母开头的数据并获取其后的所有其余内容,并留下其前的其余部分? 按字母顺序。

如果我想选择ccc, ddd, eee

,查询是什么

结果应该是这样的......

ID    Name
3     ccc
1     ddd
5     eee

3 个答案:

答案 0 :(得分:2)

这有效:(见SQL Fiddle

SELECT * FROM TABLE_NAME
WHERE NAME >=
    (SELECT NAME FROM TABLE_NAME
     WHERE NAME LIKE 'c%'
     ORDER BY NAME ASC --to ensure first name is truly the first
     LIMIT 1 --to ensure there's only one value from the subquery
    )
ORDER BY NAME ASC

子查询获得与您的第一个字母要求匹配的按字母顺序排列的名字。主查询获取名称匹配的所有行,或者按字母顺序大于子查询结果。

ASC关键字是多余的,但我想我会说清楚。

LIKE检查区分大小写。如果您希望它不区分大小写,请使用UPPER(NAME) LIKE 'C%'LOWER(NAME) LIKE 'c%'。您还应该将主查询的 where 子句更改为WHERE UPPER(NAME) >=WHERE LOWER(NAME) >=


根据AjaySingh's answer,以下内容会更好(效率更高),但您只能匹配第一个字母(更复杂的LIKE模式仍然需要我的查询)。

SELECT  * FROM table_name WHERE name >= 'c' ORDER BY name

请参阅SQL Fiddle致AjaySingh到期的信用。

答案 1 :(得分:1)

尝试:

SELECT  * FROM @Temp WHERE name > 'c%' ORDER BY name

答案 2 :(得分:-1)

试试这个......

SELECT * FROM TABLENAME WHERE NAME > 'CERTAINLETTER%' ORDER BY NAME

您不应该使用NAME等保留名称作为字段名称。将其更改为类似fldNAME或其他内容。