私は 'account_products'というテーブルを持っています。これらのテーブルには、外部キー 'product_id'とタイムスタンプ 'created_at'があります。SQL最初の列のINを使用して2番目の列を返します。
また、「製品」という表もあります。同じ 'product_id'に等しいidを持つすべての商品を 'accout_products'から返すようにしています。しかし、私はまた、 'account_products'から 'created_at'が必要です。なぜなら、それらがいつ作成されたかを見たいからです。
SELECT * FROM products
WHERE id IN (
SELECT product_id, created_at FROM account_products
)
が、IN句のみもaccount_productsの各列のためのcreated_atを返し、PRODUCT_IDに関連:
ので、SQLのような何かを伝える方法はありますか?
ありがとうございます!
あなたは全くInを必要としません。あなたが望むと思われるものは、INNER JOINで行うことができます。実際のテーブルスキーマ、サンプルデータ、およびそのデータから取得したい出力を提供するには[編集]してください。 –
'accounts_products'テーブルで' product_id'が* UNIQUE *の場合、 'JOIN'操作がうまくいくかもしれません。そうでない場合、JOINは 'product_id'に一致する値を持つ' accounts_products'のすべての*行に 'id'値をマッチさせる可能性があり、潜在的に結果に「重複」行を生成します。 – spencer7593