0

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

想象一下,我有两张桌子。第一个是公司列表。其中一些公司由于从不同来源导入并不断更新而出现重复条目​​。例如,公司表可能如下所示:

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

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

在第二个表中,我们有关于交易、优惠券、送货优惠等的信息。但是,由于这些信息来自不同的来源,因此最终得到了我们上面确定的三个不同的 rawName。例如,第二个表可能如下所示:

| 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."')
4

1 回答 1

1

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

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

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

于 2012-12-08T02:25:45.490 回答