table
id | word
SELECT id FROM table WHERE
word = "hello" OR
word = "ello" OR
word = "llo" OR
word = "lo" OR
word = "o"
我只需要找到第一个ID。如果不是第一个 - 那么第二个。如果不是第二个 - 那么第三个.... 是否可以只获取数据库中的第一个OR而不检查所有OR?
答案 0 :(得分:1)
你不能这样做,但处理你的请求的最简单方法是
ORDER BY length(word) DESC
这将首先返回最长(最佳匹配)的结果,因此您可以在其上使用LIMIT
。
答案 1 :(得分:1)
ORDER BY length(word) DESC LIMIT 1
答案 2 :(得分:0)
在末尾添加LIMIT 1
答案 3 :(得分:0)
使用Union可能有所帮助。
mysql> select * from words;
+----+-------+
| id | word |
+----+-------+
| 1 | hello |
| 2 | ello |
| 3 | llo |
| 4 | lo |
| 5 | o |
+----+-------+
5 rows in set (0.00 sec)
SELECT id
FROM (SELECT id
FROM words
WHERE word = 'hello'
UNION
SELECT id
FROM words
WHERE word = 'ello'
UNION
SELECT id
FROM words
WHERE word = 'llo'
UNION
SELECT id
FROM words
WHERE word = 'lo'
UNION
SELECT id
FROM words
WHERE word = 'o') w
LIMIT 1;
答案 4 :(得分:0)
我没有得到你想要的东西,但我会试一试。
您应该使用REGEXP。
这将匹配任何以o结尾的单词 SELECT name FROM pet WHERE name REGEXP'o $'ORDER BY length(name)DESC LIMIT 1;
http://dev.mysql.com/doc/refman/5.0/en/regexp.html#operator_regexp