我正在使用一个旧数据库,该数据库对产品使用三列键。我想选择状态为“A”或在第二个表中有匹配记录的所有产品。如果它是单列主键(如“id”),我会这样做:
SELECT * FROM `product`
WHERE `status` = 'A'
OR `id` IN (SELECT `foreign_key` FROM `table2`)
虽然我不知道如何使用三个键进行 IN 子句子选择。我想我可以将键连接在一起并比较字符串,但这似乎非常低效。有没有办法在不连接的情况下做到这一点?
最佳答案
可以在复合键上LEFT JOIN表product和table2,然后<code>status</code> = 'A' OR <code>table2</code>.<code>id</code> IS NOT NULL
LEFT [OUTER] JOIN 可以比等效的子查询更快,因为服务器可能能够更好地优化它
关于mysql - 如何基于多列键进行子选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9396402/