我有简单的sql:
SELECT *
FROM `oc_artists`
WHERE `oc_artists`.`artist_id`=`oc_artists_tags`.`artist_id`
AND `oc_artists_tags`.`artist_tag` LIKE '%klass%'
当我跑步时,我得到了:
1054 - 未知栏' oc_artists_tags.artist_id'在' where子句'
这是搜索脚本的sql。如果查询与oc_artists_tags
匹配,我需要从oc_artists返回简单的返回唯一结果。artist_tag
。
答案 0 :(得分:2)
你也需要加入表oc_artists_tags
,你可以实现这两种方式,
选项1
SELECT *
FROM `oc_artists`
INNER JOIN `test2` on `oc_artists`.`artist_id`=`oc_artists_tags`.`artist_id`
AND `oc_artists_tags`.`artist_tag` LIKE '%klass%'
选项2
SELECT *
FROM `oc_artists`,`oc_artists_tags`
WHERE `oc_artists`.`artist_id`=`oc_artists_tags`.`artist_id`
AND `oc_artists_tags`.`artist_tag` LIKE '%klass%'
答案 1 :(得分:1)
您的查询中缺少第二个联接表,因此您的联接中的include oc_artists_tags
表...
最后你的查询应该是 -
SELECT *
FROM `oc_artists`, `oc_artists_tags`
WHERE `oc_artists`.`artist_id`=`oc_artists_tags`.`artist_id`
AND `oc_artists_tags`.`artist_tag` LIKE '%klass%'
您也可以使用join或inner join代替逗号join -
SELECT *
FROM `oc_artists` as oa
join `oc_artists_tags` as oat on oa.artist_id=oat.artist_id
WHERE oat.artist_tag LIKE '%klass%';
要获得表现,请遵循以下几点 -
您应该只选择必需的列而不是*。
必须对连接字段编制索引,并且更好的是这些字段应为整数类型。
如果可能,请避免在like子句中左侧的'%',因为它不会使用索引并减慢查询速度。例如'klass%'这样的artist_tag将使用索引,但'%klass%'不会。
答案 2 :(得分:1)
你必须加入另一张桌子。Join可以帮助你。