我对SQL很新,并且遇到以下问题。考虑这些表'汽车'和'颜色':
[Cars]
CarID | Brand | ColorID | Amount
1 | Ford | 10 | 23
2 | VW | 11 | 15
3 | Opel | 11 | 12
4 | Opel | NULL | 21
5 | Ford | NULL | 16
[Colors]
ColorID | ColorName
10 | Blue
11 | Red
12 | White
13 | Green
我想要一个查询列出所有带有ColorNames的汽车,以便我有这个输出:
CarID | Brand | ColorName | Amount
1 | Ford | Blue | 23
2 | VW | Red | 15
3 | Opel | Red | 12
4 | Opel | NULL | 21
5 | Ford | NULL | 16
SELECT CarID, Brand, ColorName, Amount
FROM Cars, Colors
WHERE Cars.ColorID = Colors.ColorID
省略了ColorName = NULL的记录。
SELECT CarID, Brand, ColorName, Amount
FROM Cars, Colors
WHERE Cars.ColorID = Colors.ColorID OR
Cars.ColorId IS NULL
产生太多记录。
我需要什么SQL语句?我正在使用Microsoft SQL Server 2012。
谢谢, COOZ
答案 0 :(得分:2)
USE jQuery(".results").html(data);
像这样:
LEFT JOIN
<强>输出:强>
SELECT ca.CarID, ca.Brand, cl.ColorName, ca.Amount
FROM Cars AS ca
LEFT JOIN Colors AS cl
ON ca.ColorId = cl.ColorId
链接到演示:
<强>说明强>
CarID Brand ColorName Amount
1 Ford Blue 23
2 VW Red 15
3 Opel Red 12
4 Opel (null) 21
5 Ford (null) 16
像这样工作
一般语法:
LEFT JOIN
如需更多信息,请点击以下链接:
答案 1 :(得分:0)
从不在FROM
子句中使用逗号。 始终使用正确的JOIN
语法。
您正在寻找LEFT JOIN
,因此正确的语法是:
SELECT ca.CarID, ca.Brand, co.ColorName, ca.Amount
FROM Cars ca LEFT JOIN
Colors co
ON ca.ColorID = co.ColorID;
注意:您还应该学习使用表别名和限定列名。每当您的查询引用多个表时,您应该限定所有列名。
答案 2 :(得分:0)
使用左连接。这将从第二个表中选择所有colorid's
,并将为colours
表中没有数据的汽车返回空值
Select CarID , Brand , ColorName, Amount
from cars
Left join colors
on cars.colorid = colors.colorid
答案 3 :(得分:0)
ndb_mgmd --reload --config-file /var/lib/mysql-cluster/config.ini
试试这个好友