如何使用mysql匹配第二个表中的多种可能性?

时间:2012-12-08 02:21:29

标签: mysql

我不完全确定如何提出这个问题,所以我将提供一个示例表和一个示例输出,然后对我正在尝试完成的内容进行更全面的解释。

想象一下,我有两张桌子。首先是公司名单。其中一些公司由于被导入并且从不同来源不断更新而具有重复的条目。例如,公司表可能如下所示:

| rawName           | strippedName |
| Kohl's            | kohls        |
| kohls.com         | kohls        |
| kohls Corporation | kohls        |

因此,在这种情况下,我们拥有来自三个不同来源的信息。为了让我的程序能够理解每个源都是同一个商店,我创建了剥离的名称列(我也用它来创建URL和诸如此类的东西)。

在第二个表格中,我们提供了有关优惠,优惠券,运费优惠等信息。但是,由于这些来自各种来源,最终会得到我们在上面确定的三种不同的rawNames。例如,第二个表可能如下所示:

| merchantName      | dealInformation       |
| kohls.com         | 10% off everything... |
| kohl's            | Free shipping on...   |
| kohls corporation | 1 Day Flash Sale!     |
| kohls.com         | Buy one get one...    |

所以这里我们有四个来自同一家公司的条目。但是,当网站上的用户访问Kohls的列表时,我希望它显示每个源的所有条目。

这是我目前拥有的,但它似乎没有做到这一点。这似乎只有在我将该子查询中的LIMIT设置为1才有效,这样它才会带回一个rawNames。我需要它来匹配所有的rawNames。

SELECT * FROM table2
WHERE merchantName = (SELECT rawName FROM table1 WHERE strippedName = '".$strippedName."')

1 个答案:

答案 0 :(得分:1)

最快的解决方法是将mercahantName =替换为merchantName IN

SELECT * FROM table2
WHERE merchantName IN (SELECT rawName FROM table1 WHERE strippedName = '".$strippedName."')

=运算符需要在每一方都有一个值 - IN关键字将值与多个值匹配。