mysql - mysql 中的 IN 和 UNION 数据集未正确形成

标签 mysql sql logic union

数据库架构

Databse Schema

问题-

Find out the models and prices for all the products (of any type) produced by maker B.

我的尝试 -

SELECT b.model, b.price FROM laptop AS b 
WHERE b.model IN ( SELECT model FROM product WHERE maker = 'B')
UNION
SELECT c.model, c.price FROM pc AS c 
WHERE c.model IN ( SELECT model FROM product WHERE maker = 'B')
UNION
SELECT d.model, d.price FROM printer AS d 
WHERE d.model IN ( SELECT model FROM product WHERE maker = 'B')

即使这也没有显示仅包含 B 的正确数据集 -

SELECT b.model, b.price FROM laptop AS b 
WHERE b.model IN ( SELECT model FROM product WHERE maker = 'B')

仅出现一个结果集。

让我知道我在查询中犯的逻辑错误。

编辑-

输出 -

SELECT model FROM product WHERE maker = 'B'

quer1

SELECT b.model, b.price FROM laptop AS b 
WHERE b.model IN ( SELECT model FROM product WHERE maker = 'B')

output

查询 - SELECT * FROM 产品 WHEREmaker = 'B'

输出 -

enter image description here

最佳答案

SELECT b.model, b.price FROM laptop AS b 
...
SELECT c.model, c.price FROM laptop AS c 
...
SELECT d.model, d.price FROM laptop AS d 

您从笔记本电脑中进行了 3 次选择,结果集相同。然后将它们UNION在一起,这将删除所有重复项。

编辑:您的示例查询;

SELECT b.model, b.price FROM laptop AS b 
WHERE b.model IN ( SELECT model FROM product WHERE maker = 'B')

只会找到笔记本电脑,因为这是唯一使用的 table 。 1121是PC,所以查询不会显示它。

关于mysql - mysql 中的 IN 和 UNION 数据集未正确形成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14642611/

相关文章:

php - 如何更新现有日期并在 MySQL 表中插入新日期

SQL:如何更新多个字段,以便将空字段内容移动到逻辑上最后一列 - 丢失空白地址行

perl - 在 Perl 中逼近 pi - 我做错了什么?

sql - 带有永远的子查询的 MySQL UPDATE 查询

java - 在 JAVA 中跳过字符/数字

java - 当我点击一个按钮时,我只想激活它周围的按钮。这怎么可能?

php - 在一个数组中从 mysql 检索多个结果

mysql - 如何使用 sql 子查询获取特定 id 的数据(我正在使用 sql 子查询 IN)

mysql - 导出 SQL 表并将其与关系组合

sql - 在一个操作中运行多个SQL语句