Mysql SQL在第一列中使用,并返回第二列

Mysql SQL在第一列中使用,并返回第二列,mysql,sql,Mysql,Sql,我有一个名为“account\u products”的表,它有一个外键“product\u id”,还有一个时间戳“created\u at” 我还有一张叫做“产品”的桌子。我正在尝试从“accout_products”返回id等于相同“product_id”的所有产品。但我还需要“帐户产品”中的“created_at”,因为我想知道它们是何时创建的 那么,有没有一种方法可以告诉SQL类似于: SELECT * FROM products WHERE id IN ( SELECT pro

我有一个名为“account\u products”的表,它有一个外键“product\u id”,还有一个时间戳“created\u at”

我还有一张叫做“产品”的桌子。我正在尝试从“accout_products”返回id等于相同“product_id”的所有产品。但我还需要“帐户产品”中的“created_at”,因为我想知道它们是何时创建的

那么,有没有一种方法可以告诉SQL类似于:

SELECT * FROM products
WHERE id IN (
    SELECT product_id, created_at FROM account_products
)
但是IN子句只与产品id相关,还返回为account\u产品的每一列创建的\u at


谢谢

使用
连接

SELECT p.*, ap.created_at
FROM products p JOIN
     account_products ap
     ON ap.product_id = p.id;

使用
连接

SELECT p.*, ap.created_at
FROM products p JOIN
     account_products ap
     ON ap.product_id = p.id;

你根本不需要这个。您看起来想要的可以通过内部联接完成。如果您想提供实际的表架构、一些示例数据以及希望从这些数据中获得的输出,这里的人可能会提供帮助。
JOIN
操作可能适合您,如果
product\u id
accounts\u products
表中是唯一的。如果不是,则联接有可能将您的
id
值匹配到
帐户\u产品
中在
产品\u id
中具有匹配值的每一行,从而可能在结果中产生“重复”行。您根本不需要输入。您看起来想要的可以通过内部联接完成。如果您想提供实际的表架构、一些示例数据以及希望从这些数据中获得的输出,这里的人可能会提供帮助。
JOIN
操作可能适合您,如果
product\u id
accounts\u products
表中是唯一的。如果不是,则联接有可能将您的
id
值与
accounts\u products
中在
product\u id
中具有匹配值的每一行相匹配,从而可能在结果中产生“重复”行。尽管我们应该指出,如果
product\u id
account\u products
中不是唯一的,此查询可能会从
产品
返回重复的行。与(2,2,3,3,3,4,4,4,4,4,4)中的
id相比,在
中,具有
id
值且与列表中的值匹配的行将只返回一次,无论匹配值在
列表中重复多少次。非常感谢!很好!虽然我们应该指出,如果
product\u id
account\u products
中不是唯一的,那么此查询可能会从
products
返回重复的行。与(2,2,3,3,3,4,4,4,4,4,4)中的
id相比,在
中,具有
id
值且与列表中的值匹配的行将只返回一次,无论匹配值在
列表中重复多少次。非常感谢!很好!