mysql - SQL 特定语句查询

标签 mysql sql

我正在对数据库进行相当大的查询,由于某种原因,它返回了许多与我的任何搜索词都不匹配的结果。它似乎也复制了我的结果,所以我得到了相同的 SQL 项 16 次。有什么想法吗?

SELECT a.*
FROM
  j20e8_datsogallery AS a,
  j20e8_datsogallery_tags AS t
WHERE
  (a.id LIKE "%bear%" OR
   a.imgtitle LIKE "%bear%" OR
   a.imgtext LIKE "%bear%" OR
   a.imgauthor LIKE "%bear%" OR
   t.tag LIKE "%bear%")
ORDER BY a.id DESC
LIMIT 0, 16

我认为这可能与 LIKE %term% 部分有关,但根本无法使其工作。

最佳答案

我会确保您符合加入条件。否则你最终会得到一个完整的连接,或者更糟的是,一个来自交叉连接的笛卡尔积。沿着这些线的东西:

SELECT a.*
FROM
j20e8_datsogallery AS a
JOIN j20e8_datsogallery_tags AS t ON a.ID = t.GalleryID
WHERE
...
ORDER BY a.id DESC
LIMIT 0, 16

此外,考虑使用 FULLTEXT INDEX ...它可以将所有这些列合并到一个索引中,并使搜索所有这些列非常有用。

MySql 中的 FULLTEXT INDEX 可用于将几个不同的列“组合”成一大堆文本,然后您可以使用 MATCH()反对搜索词。

要创建一个FULLTEXT INDEX,您可以简单地使用CREATE INDEX 语法记录here .

CREATE FULLTEXT INDEX FDX_datsogallery 
ON j20e3_datsogallery ( id, imgtitle, imgtext, imgauthor )

然后您可以在包含 MATCH() ... AGAINST 语句的查询中使用它,记录在案 here :

SELECT a.*
FROM j20e8_datsogallery AS a
WHERE MATCH( id, imgtitle, imgtext, imgauthor ) AGAINST( 'bear' )

关于mysql - SQL 特定语句查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492876/

相关文章:

python - 将 Vabinary(Max) 更改回文本<MS SQL "2005">

sql - Spatialite SQL 查询以查找给定纬度/经度的最近节点

php - MySQL PHP : switching between mysql databases is slow

Netbeans 上的 java.sql.SQLException : Parameter index out of range (5 > number of parameters, 是 4)

php - 在php中使用系统函数返回变量中的mysql错误

php - 创建了登录名,但重定向不起作用

php - 显示组是否可以访问某些表单

php - 将行的 MySQL 字段提取到 PHP 变量和数组中

mysql - 按计数结果过滤并显示所有结果

sql - sp_send_dbmail 中的局部变量?