这个mysql查询有什么问题?

时间:2011-04-05 13:10:46

标签: php mysql

这是我的mysql查询:

SELECT * 
FROM wp_bp_group_documents 
WHERE group_id = 4 
  AND id IN (2) 
  AND (file LIKE '%jpg' 
       OR file LIKE '%png' 
       OR file LIKE '%jpeg' 
       OR file LIKE '%gif')     
ORDER BY created_ts DESC LIMIT 0, 20

这是我的表结构:

'id', 'user_id', 'group_id', 'created_ts', 'modified_ts', 'file', 'name', 'description', 'featured', 'download_count'
'1', '1', '1', '1301587327', '1301587327', '1301587327-NewApplicationForm.pdf', 'Tenancy application form', 'This is a tenancy application form. Please download and fill in.', '0', '0'
'2', '1', '4', '1301934439', '1302005432', '1301934439-bupa_large.png', 'BUPA Stand Image', 'asd', '0', '0'

所以从这个查询中我希望它能找到数据库中的第二条记录,但它不会返回任何值。

没有mysql错误。我只是想知道我是否正确完成了查询?

谢谢

3 个答案:

答案 0 :(得分:4)

file是一个MySQL关键字。尝试在反引号中包装file名称:`file`。

答案 1 :(得分:1)

您的id列似乎是一个字符串,但您在数组中指定了一个整数。这可能是问题吗?

答案 2 :(得分:0)

稍微关闭OP的主题,但是你知道(对吗?)当你在任何选择中包含“like”时,MySQL别无选择,只能通读 整个表 < / strong>即可。为了避免这种情况,一些人试图确保像文件类型这样的值 - 根据定义,已经提供自己的分类法的东西 - 被分解为非唯一索引。

如果您决定这样做,您的牌桌会突然变得不规范。为了补救那个,该表需要另一个列,比如说`pictype`,你要编制索引。对我来说,无论如何,这是一个更强大的桌面设计,但它只是MHO。