我正在尝试测试我创建的sql数据库。为此,我有2张桌子:物品和品牌。项目存储不同的字段,包括品牌名称,品牌存储其他字段,包括名称。我想检查一下每个品牌的商品,品牌表中都有相应的名称。我该怎么办?我想到了以下几点:
"for each row in items"
if (count(select * from items join brands on items.brand = brands.name) == 0, select items.name, '');
但后来我不知道如何在其中加入for语句......有什么想法吗?
答案 0 :(得分:4)
你可以试试这个:
SELECT items.name
FROM items LEFT JOIN brands
ON items.brand = brands.name
WHERE brands.name IS NULL
ORDER BY items.name
使用此查询,您可以从项目表中获取所有记录,将它们与相应的品牌记录(如果存在)连接起来,最后选择没有品牌相应记录的记录。
答案 1 :(得分:1)
DECLARE @Number int;
SET @Number = 50;
IF @Number > 100
PRINT 'The number is large.';
ELSE 开始 IF @Number< 10 打印'数字很小。'; 其他 打印'数字中等。'; 结束 ; GO
答案 2 :(得分:0)
所以你真正想知道的是品牌表中没有品牌的所有商品。
他们是:
SELECT DISTINCT brand
FROM items i
WHERE NOT EXISTS (
SELECT NULL
FROM brands b
WHERE i.brand = b.brand
)
我建议你:
ALTER TABLE item WITH CHECK ADD CONSTRAINT item_FK_brand FOREIGN KEY (brand) REFERENCES brand (brand)