'where-clause' 中的未知列
Unknown column in 'where-clause'
我有简单的sql:
SELECT *
FROM `oc_artists`
WHERE `oc_artists`.`artist_id`=`oc_artists_tags`.`artist_id`
AND `oc_artists_tags`.`artist_tag` LIKE '%klass%'
当我 运行 我得到了:
1054 - Unknown column 'oc_artists_tags.artist_id' in 'where clause'
这是一个 sql 搜索脚本。如果查询与 oc_artists_tags
.artist_tag
.
匹配,我需要来自 oc_artists 的简单 return 唯一结果
您的查询中缺少第 2 个连接 table,因此您的连接中 include oc_artists_tags
table...
最后你的查询应该是-
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%'
您也可以使用连接或内部连接代替逗号连接-
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%';
要获得性能,请遵循以下要点-
您应该 select 只需要列而不是 *.
join字段必须有索引,最好是整数类型。
如果可能,请避免在 like 子句的左侧使用“%”,因为它不会使用索引并减慢您的查询速度。例如 artist_tag 像 'klass%' 将使用索引但 '%klass%' 不会。
你必须加入另一个 table。Join 帮助你。
你也需要加入 table 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%'
我有简单的sql:
SELECT *
FROM `oc_artists`
WHERE `oc_artists`.`artist_id`=`oc_artists_tags`.`artist_id`
AND `oc_artists_tags`.`artist_tag` LIKE '%klass%'
当我 运行 我得到了:
1054 - Unknown column 'oc_artists_tags.artist_id' in 'where clause'
这是一个 sql 搜索脚本。如果查询与 oc_artists_tags
.artist_tag
.
您的查询中缺少第 2 个连接 table,因此您的连接中 include oc_artists_tags
table...
最后你的查询应该是-
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%'
您也可以使用连接或内部连接代替逗号连接-
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%';
要获得性能,请遵循以下要点-
您应该 select 只需要列而不是 *.
join字段必须有索引,最好是整数类型。
如果可能,请避免在 like 子句的左侧使用“%”,因为它不会使用索引并减慢您的查询速度。例如 artist_tag 像 'klass%' 将使用索引但 '%klass%' 不会。
你必须加入另一个 table。Join 帮助你。
你也需要加入 table 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%'