我有一个名为product
的表(最小字段):
manufacturer_id | sku
33 | Icedisk 1<:=:>DEEPCOOL
33 | DP-IDISK1<:=:>DEEPCOOL
我想通过一个SELECT语句来完成这两个问题:Icedisk 1<:=:>DEEPCOOL | DP-IDISK1<:=:>DEEPCOOL
。
我试过了,没有运气:
SELECT p1.sku AS sku1, p2.sku AS sku2
FROM `product` p1 INNER JOIN `product` p2 ON p1.manufacturer_id=p2.manufacturer_id
WHERE p1.sku LIKE 'Icedisk 1<:=:>%' AND p2.sku='DP-IDISK1<:=:>%'
如果我单独搜索每个产品(例如SELECT
sku FROM
产品WHERE
sku LIKE 'DP-IDISK1<:=:>%'
),则可以正常使用。我在这里缺少什么?
非常感谢!
答案 0 :(得分:1)
将AND p2.sku='DP-IDISK1<:=:>%'
更改为AND p2.sku LIKE 'DP-IDISK1<:=:>%'
,您将获得预期的结果。
至于您对问题的评论(请将其添加到问题中)很简单 - 您不需要使用values
而且您不需要在括号中包含select
语句。而不是:
INSERT IGNORE INTO aa_mapare_produse (sku1,sku2) VALUES (SELECT p1.sku, p2.sku FROM product p1 INNER JOIN product p2 ON p1.manufacturer_id=p2.manufacturer_id WHERE p1.sku LIKE 'E-Golf<:=:>%' AND p2.sku LIKE 'DP-EGOLF-WH<:=:>%' )
应该是
INSERT IGNORE INTO aa_mapare_produse (sku1,sku2) SELECT p1.sku, p2.sku FROM product p1 INNER JOIN product p2 ON p1.manufacturer_id=p2.manufacturer_id WHERE p1.sku LIKE 'E-Golf<:=:>%' AND p2.sku LIKE 'DP-EGOLF-WH<:=:>%'
而且更有可能工作