我试图做的是从我的数据库中选择视频,VID = 1,最大VID = 25000,我有400k视频,但我不想全部启动它们,所以我需要选择这种方式,我为搜索脚本发出此命令,但我如何看到它不起作用...希望有人可以帮助我解决这个问题
用于搜索的MySql命令(此命令是显示找到多少视频):
select
count(*) as num
from
video
where
VID BETWEEN 1 AND 25000
AND
title LIKE '%key1%'
or
title LIKE '%key2%'
or
title LIKE '%key3%'
or
title LIKE '%key4%'
我认为
您需要通过在 AND 子句中添加括号来使用运算符优先级
select
count(*) as num
from
video
where
VID BETWEEN 1 AND 25000
AND
(title LIKE '%key1%'
or
title LIKE '%key2%'
or
title LIKE '%key3%'
or
title LIKE '%key4%' );
将您的
LIKE
添加到括号 () 中,请尝试执行以下操作:
select count(some_id) as num from video where
VID >= 1 AND VID <= 25000 AND
(title LIKE '%key1%' or title LIKE '%key2%' or title LIKE '%key3%' or title LIKE '%key4%')
试试下面:
select count(*) as num from video where VID BETWEEN 1 AND 25000 AND (title LIKE '%key1%' or title LIKE '%key2%' or title LIKE '%key3%' or title LIKE '%key4%')
只是所有标题比较都设置在括号中。
select
count(*) as num
from
video
where
VID BETWEEN 1 AND 25000
AND (
title LIKE '%key1%'
or
title LIKE '%key2%'
or
title LIKE '%key3%'
or
title LIKE '%key4%'
)
试试这个
SELECT count(title) as num
FROM video
WHERE vid <= 25000
AND (title LIKE '%key1%' OR title LIKE '%key2%' OR title LIKE '%key3%' OR title LIKE '%key4%')
你的 between 做得很好,真正的问题是你当前的脚本是这样执行的,因为 AND 运算符的优先级高于 OR:
select
count(*) as num
from
video
where
(VID BETWEEN 1 AND 25000
AND
title LIKE '%key1%')
or
title LIKE '%key2%'
or
title LIKE '%key3%'
or
title LIKE '%key4%'
所以你需要做的是像这样改变它:
select
count(*) as num
from
video
where
VID BETWEEN 1 AND 25000
AND (
title LIKE '%key1%'
or
title LIKE '%key2%'
or
title LIKE '%key3%'
or
title LIKE '%key4%' )
试试这个
select
count(if(vid between 1 and 25000, 1, 0)) as totalvideocnt
from
video
where
(title like '%key1%' or title like '%key2%' or title like '%key3%' or title like '%key4%')