MySQL - 使用 WHERE IN 子句连接 2 个表

MySQL - use WHERE IN clause to JOIN 2 tables

我正在尝试使用 WHEREIN 加入 2 table,而不是 JOIN/LEFT JOIN

这是我写的SQL,当我运行它时失败了:

SELECT 
      product.price as price,
      product.date as date,
      product.status as status,
      a.Title as title
FROM MarketingDb.Product product
WHERE product.Id
IN (
    SELECT a.ListingId, a.Title FROM MarketingDb.Status a
)
LIMIT 15;

提到的错误消息:Unknown column 'a.Title' in 'field list'

根据我的理解,错误的发生似乎是因为我写的SQL只在子查询中提到了table MarketingDb.Status a,而在外部[=37]中没有被识别=] 子句。

请问:SQL应该如何修改才能selecta.Title成功?非常感谢您的帮助!

编辑 1:

我想问一下,如果不是只有 2 tables,现在我想加入 3rd/4th/... more tables using IN,什么应该是正确的way/syntax要这样做吗?

这是我尝试但失败的方法:

SELECT 
      product.price as price,
      product.date as date,
      product.status as status,
      (SELECT s.Title FROM MarketingDb.Status s WHERE s.ListingId = product.Id) 
      AS title
FROM MarketingDb.Product product
WHERE product.Id
IN (
    SELECT DISTINCT a.ListingId, a.Title FROM MarketingDb.Status a
)
AND IN (
    SELECT DISTINCT b.Id FROM MArketingDb.Price b
)
LIMIT 15;

如果您想在没有连接的情况下执行此操作,请使用标量相关子查询。假设 status(listingid)product(id) 相关:

select 
    p.price,
    p.date,
    p.status,
    (select s.title from marketingdb.status s where s.listingid = p.id) as title
from marketingdb.product p

需要强调的是,如果 status 中有多行与单个 product(id) 匹配,这将出错 - 如果您遇到这种情况,则要么限制行数在子查询中...或使用 join,它允许多个匹配项..