内心加入LIKE,有什么不对?

时间:2015-07-02 08:01:15

标签: mysql sql inner-join

我有两张桌子

Table 'prd_help_zusatz'
ID   Title   ART
1    Text 1  material
2    Text 2  material
3    Text 3  farbe

Table 'prd_produkt'
ID   PRD_material ...
1    [1][2]
2    [2]

PRD_material中的prd_produkt是来自prd_help_zusatz []的ID,与所选材料一样多。现在,我想提供prd_help_zusatz中所有可能的值,这些值是prd_produkt使用的材料。

我的选择代码

SELECT h.ID 
FROM prd_help_zusatz as h, prd_produkt as p 
WHERE h.ART = 'material' 
  AND p.PRDART = 'uhr' 
  AND h.ID LIKE p.PRD_material 
GROUP BY h.Titel_d 

问题是,PRD_material上的值不相等。我该如何选择? .. h.ID LIKE '['p.PRD_material']'不起作用。

2 个答案:

答案 0 :(得分:2)

您需要使用%运算符来寻找匹配项。如果要比较列上的列,则将其放在两侧。如果您只想比较左侧,您可以将它放在那里。我建议您查看此主题以获得更多洞察力:How to use column name as part of a LIKE statement in a WHERE clause of a JOIN

所以:

SELECT h.ID 
FROM      prd_help_zusatz as h, 
          prd_produkt as p 
WHERE     h.ART = 'material' 
          AND p.PRDART = 'uhr' 
          AND h.ID LIKE '%' + p.PRD_material + '%'
GROUP BY  h.Titel_d 

答案 1 :(得分:1)

我建议你使用这个查询:

SELECT *
FROM   prd_help_zusatz h
JOIN   prd_produkt p 
  ON   p.PRD_material LIKE CONCAT('%', h.ID, '%') AND
       p.PRDART = 'uhr'

SQL Fiddle Demo