Mysql SQL在第一列中使用,并返回第二列
我有一个名为“account\u products”的表,它有一个外键“product\u id”,还有一个时间戳“created\u at” 我还有一张叫做“产品”的桌子。我正在尝试从“accout_products”返回id等于相同“product_id”的所有产品。但我还需要“帐户产品”中的“created_at”,因为我想知道它们是何时创建的 那么,有没有一种方法可以告诉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
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
值且与列表中的值匹配的行将只返回一次,无论匹配值在列表中重复多少次。非常感谢!很好!