INNER JOIN在一行中获得相同的表格

时间:2015-04-11 08:00:34

标签: mysql

我有一个名为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<:=:>%'),则可以正常使用。我在这里缺少什么?

非常感谢!

1 个答案:

答案 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<:=:>%'

而且更有可能工作