[英]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-“ where子句”中的未知列“ oc_artists_tags.artist_id”
這是用於搜索腳本的sql。 如果查詢與oc_artists_tags
匹配,我需要oc_artists的簡單返回唯一結果。 artist_tag
。
您還需要聯接表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%'
查詢中缺少第二個include oc_artists_tags
表,因此在include oc_artists_tags
中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%'
您也可以使用連接或內部連接來代替逗號連接-
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%'將不使用索引。
您必須加入另一個表。 加入可以幫助您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.