尽管所有行中的available = 0,我仍然在这个sql中返回所有返回的行(好像可用的是1):
SELECT * FROM grfx_s_search LEFT
JOIN grfx_s_search_data ON grfx_s_search.id = grfx_s_search_data.id
WHERE ( tags REGEXP '[[:<:]]abstract[[:>:]]' ) OR ( title REGEXP '[[:<:]]abstract[[:>:]]' )
AND grfx_s_search_data.available = 1
ORDER BY date_added DESC LIMIT 0, 32
我对此很困惑!我确定这是一个简单的答案 - 我只是看不出这里出了什么问题。
问题,简单说明:
为什么我在所有项目中可用= 0时返回行?
答案 0 :(得分:3)
你必须在这里使用()
:
WHERE (( tags REGEXP '[[:<:]]abstract[[:>:]]' ) OR ( title REGEXP '[[:<:]]abstract[[:>:]]' ) ) AND grfx_s_search_data.available = 1
如果你不这样做,首先评估结束和or。
答案 1 :(得分:0)
您需要使用
AND grfx_s_search_data.available = 0
不是
AND grfx_s_search_data.available = 1
还将OR条件放在一个括号中
SELECT * FROM grfx_s_search LEFT
JOIN grfx_s_search_data ON grfx_s_search.id = grfx_s_search_data.id
WHERE (( tags REGEXP '[[:<:]]abstract[[:>:]]' ) OR ( title REGEXP '[[:<:]]abstract[[:>:]]' ) )
AND grfx_s_search_data.available = 0
ORDER BY date_added DESC LIMIT 0, 32