SQL - 为每个(如果......那么......其他......)

时间:2012-04-12 17:29:25

标签: sql for-loop if-statement

我正在尝试测试我创建的sql数据库。为此,我有2张桌子:物品和品牌。项目存储不同的字段,包括品牌名称,品牌存储其他字段,包括名称。我想检查一下每个品牌的商品,品牌表中都有相应的名称。我该怎么办?我想到了以下几点:

"for each row in items"
if (count(select * from items join brands on items.brand = brands.name) == 0, select items.name, '');

但后来我不知道如何在其中加入for语句......有什么想法吗?

3 个答案:

答案 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)