mysql - 如何基于多列键进行子选择

标签 mysql sql

我正在使用一个旧数据库,该数据库对产品使用三列键。我想选择状态为“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/

相关文章:

mysql - 总和列与连接表的总和

PHP:从 MySQL 数据库检索多行

php - 我应该在 Laravel 4 应用程序中的哪里添加原始 SQL 查询?

sql - 将多行分组在一起时,SQL 如何选择显示哪一行?

sql - 在高级连接中 Eloquent 地高级

MySQL – 替换部分以 '/' 结尾的字符串

javascript - 从 mySql 数据库在 php 中返回 JSON

mysql - 连接具有不同名称的表

php - 如何加入具有 2 个主键的 SQL 表内容?

mysql - SQL输出精简