MySQL 查询 - 从 2 个表中选择,如果存在于其他检查字段中

标签 mysql

我正在尝试从名为 products 的表中提取产品,我还有一个名为 Product_ranges 的表。

products
--------
id
name
model

product_ranges
--------------
id
product_id
other_id

SELECT p.id 
FROM products As p 
LEFT JOIN product_ranges As pr ON (pr.product_id = p.id AND pr.other_id = 16)

这将选择所有产品,并且如果产品存在于其中,则也包括product_ranges表列,但如果它确实存在于该表中并且other_id不等于16,我不希望产品出现在返回的结果中,但是如果该产品根本不存在于其他表中,我仍希望它出现在结果中。

我确信我几年前就已经做过了,但想不出它的 SQL - 如果有人知道正确的查询,我将不胜感激,谢谢。

最佳答案

更新:

SELECT p.id 
FROM products 
LEFT JOIN product_ranges pr ON pr.product_id = p.id
WHERE (pr.product_id IS NULL OR pr.other_id = 16)

关于MySQL 查询 - 从 2 个表中选择,如果存在于其他检查字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19930889/

相关文章:

mysql - 如何在开发和生产中使用两个连接字符串

mysql - 具有多个表连接的每个组的前 N ​​个

mysql - 子查询的连接等效项

java - 检索列具有相同值的不同行并通过没有游标超时进行迭代?

mysql - 当我们使用嵌套查询 for max(cgpa) 时,我们可以使用 select * 吗

php - 重复mysql请求

php - 在 Ubuntu (laravel) 中使用 XAMPP 运行 PHP 和 MySQL

php - 用户登录codeigniter后获取数据

php - 无法跳转到第 8 行 .../tag.php 中 MySQL 结果索引 6 上的第 0 行

java - 在JSON Serde中选择查询返回Null值