我不完全確定如何提出這個問題,所以我將通過提供一個示例表和一個示例輸出來引導,然後對我正在嘗試完成的內容進行更全面的解釋。如何使用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 ;-)你的嵌套查詢確實返回你所需要的所有行,而且不止一個查詢纔有效。只有當你自己運行嵌套查詢時,你纔會注意到這一點。既然你需要你的表比較從阿瑟賽德一堆值的,必須使用正確的操作是'IN' – bonCodigo