从select语句在SQL
问题描述:
我想更有效地实现这一目标而优雅从select语句在SQL
SELECT
MD.*,
(SELECT City FROM PostcodeData WHERE MD.Postcode = Postcode) [City],
(SELECT State FROM PostcodeData WHERE MD.Postcode = Postcode) [State],
(SELECT Areacode FROM PostcodeData WHERE MD.Postcode = Postcode) [Areacode]
FROM MemberDetails AS MD
我能明显INNER JOIN ON邮编两个表,但我有问题时,MemberDetail.postcode确实拉动多个值不存在于PostcodeData.postcode中。在这种情况下,我仍然希望选择这些成员,但对于城市,州和Areacode的结果为NULL。这在当前查询中已经实现,但效率很低。任何想法,将不胜感激。干杯!
答
只需使用一个LEFT JOIN
:
SELECT
MD.*,
P.City,
P.State,
P.Areacode
FROM MemberDetails AS MD
LEFT JOIN PostcodeData P ON MD.Postcode = P.Postcode
答
使用OUTER JOIN
而不是INNER JOIN
- 即使连接表上没有匹配的记录,它也会返回记录。
但是,外部连接返回FROM子句中提到的至少一个表或视图的所有行,只要这些行满足任何WHERE或HAVING搜索条件。
答
肯定外连接就是答案?就像:
SELECT MD.*,
IsNull(pc.City,"No city") AS City,
IsNull(pc.State,"No state") AS State,
IsNull(pc.AreaCode,"No area code") AS AreaCode
FROM
MemberDetails AS MD
LEFT OUTER JOIN PostCodeData AS pc ON md.PostCode=pc.PostCode
干杯@sgegges,左加入是我之后 – Gregology 2013-02-22 20:08:55