MySQL触发器。需要示例答案。

4
我正在尝试寻找只生产笔记本电脑而不生产台式机的产品制造商。
Relations:
Product(maker, model, type)
Laptop(Model, price, speed, ram, hd, screen)
PC(model, price, speed, ram, hd)
Printer(model,price, color, price)

我尝试过的方法

 (SELECT maker, type 
 FROM product WHERE type = 'laptop') 
 DIFFERENCE 
 (SELECT maker, type 
 FROM product WHERE type = 'pc');

我理解您的意思是希望了解MySQL是否有不同的操作方式。在MySQL中没有不同的操作方式。

请参考以下链接:http://nimal.info/blog/2007/intersection-and-set-difference-in-mysql-a-workaround-for-except/ - mellamokb
问题:您是否需要拥有笔记本电脑但没有台式电脑的制造商?您是否需要拥有台式电脑但没有笔记本电脑的制造商? - RolandoMySQLDBA
5个回答

2
SELECT 
    p1.maker, 
    p1.type
FROM 
    product p1 
    LEFT JOIN product p2 ON p2.maker = p1.maker AND p2.type = 'pc'
WHERE 
    p1.type = 'laptop'
    p2.maker IS NULL

这种方法有点昂贵,因为子查询会持续运行。 - kasavbere
@kasavbere 已修复...并且+1给你的答案。 - Michael Fredrickson

1
select maker, type from product 
where type='laptop' and
maker not in (select maker from product where type = 'pc')

哈!我同时写了同一行代码 :-) (这才是正确的方法) - Victor Nițu

1

SELECT maker, type FROM product WHERE type = 'laptop' AND type != 'pc';

从产品中选择制造商和类型,其中类型为“笔记本电脑”且类型不等于“个人电脑”;


实际上这是完全错误的,但我为了参考而将其恢复:它只会返回垃圾,因为它会选择既不是PC又不是笔记本电脑的产品。再次强调,这是错误的,与OP的问题无关。请查看我的其他答案以获取更有能力的方法。 - Victor Nițu

0
SELECT `maker`, `type` FROM `product` WHERE `type` = 'laptop' AND `maker` NOT IN
                 (SELECT `maker`, `type` FROM `product` WHERE `type` = 'pc');

-1
SELECT p.maker, p.type 
    FROM product p 
    WHERE p.type = 'laptop' 
    AND NOT EXISTS ( 
        SELECT p2.maker, p2.type 
        FROM table p2 
        WHERE p2.type = 'pc' 
        AND p2.maker = p1.maker
    ) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接