2017-10-04 67 views
1

我想一个NOT子句添加到该SQL查询:如何添加一个NOT子句到我的SQL查询

Select 
    members.Member_Id, 
    members.Title, 
    members.FirstName, 
    members.LastName, 
    members.Po_Box, 
    members.Street, 
    members.City, 
    members.Del, 
    members.Mobile, 
    members.eMail, 
    members.WFTD, 
    ship_info.Renewal_Date 
From 
    members 
Left Join 
    ship_info on (members.Member_Id = ship_info.Member_Id) 
Order By 
    ship_info.Renewal_Date 

未条款是这样的:

Where Member_Id Not Between 2000 And 3000; 

我曾尝试将这一行放在不同的地方,但每次都会出现错误,并且由于Wamp用法语报告错误,因此找不到任何帮助。

是的,类似这样的问题,但他们更困惑我,因为我不明白他们足以相应地修改我的脚本。我不太了解数组和复杂的代码。

为了邮件合并的目的,我从数据库中导出数据,并且其成员身份在2000年代的成员被删除成员,其ID已从其原始ID移动到更高数字的成员,因为我不想永久删除人员以防他们后来改变主意。

谢谢。

+2

你'Member_Id'列在查询的两个表存在。你需要指定表名。 –

+0

您需要在Member_id前面添加一个表名,因为它是有意义的。 – orhtej2

+0

如果您指定了任何错误,那么会更好,否则在where子句中会出现一个错误,您必须指定表别名,因为两个表中都存在“Member_id” –

回答

1

由于您正在使用JOIN并且member_id字段驻留在JOIN的两个表中,所以必须指定您需要where语句的表。尝试:

SELECT members.Member_Id 
    ,members.Title 
    ,members.FirstName 
    ,members.LastName 
    ,members.Po_Box 
    ,members.Street 
    ,members.City 
    ,members.Del 
    ,members.Mobile 
    ,members.eMail 
    ,members.WFTD 
    ,ship_info.Renewal_Date 
FROM members 
LEFT JOIN ship_info ON (members.Member_Id = ship_info.Member_Id) 
WHERE members.Member_Id NOT BETWEEN 2000 
     AND 3000 
ORDER BY ship_info.Renewal_Date 
2

你可以尝试这样的:

Select members.Member_Id 
    ,members.Title 
    ,members.FirstName 
    ,members.LastName 
    ,members.Po_Box 
    ,members.Street 
    ,members.City 
    ,members.Del 
    ,members.Mobile 
    ,members.eMail 
    ,members.WFTD 
    ,ship_info.Renewal_Date 
From members 
LEFT JOIN ship_info ON (members.Member_Id=ship_info.Member_Id) 

WHERE (members.Member_ID < 2000 OR members.member_ID > 3000) 

ORDER BY ship_info.Renewal_Date 
0

我觉得下面应该工作,如果没有的话,请注明错误,你得到了,你只需要前缀表名members(如果更好您使用此表名作为别名)

SELECT members.Member_Id 
    ,members.Title 
    ,members.FirstName 
    ,members.LastName 
    ,members.Po_Box 
    ,members.Street 
    ,members.City 
    ,members.Del 
    ,members.Mobile 
    ,members.eMail 
    ,members.WFTD 
    ,ship_info.Renewal_Date 
FROM members 
LEFT JOIN ship_info ON (members.Member_Id = ship_info.Member_Id) 
WHERE members.Member_Id NOT BETWEEN 2000 
     AND 3000 
ORDER BY ship_info.Renewal_Date 
1

据“数据库管理基础”,下面将是适当的语法:

Select members.Member_Id 
    ,members.Title 
    ,members.FirstName 
    ,members.LastName 
    ,members.Po_Box 
    ,members.Street 
    ,members.City 
    ,members.Del 
    ,members.Mobile 
    ,members.eMail 
    ,members.WFTD 
    ,ship_info.Renewal_Date 
From members 
LEFT JOIN ship_info ON (members.Member_Id=ship_info.Member_Id) 

WHERE NOT members.Member_Id BETWEEN 2000 AND 3000 

ORDER BY ship_info.Renewal_Date ; 

在前面提到的书,它指出,

JOIN报表既可以在FROMWHERE 子句指定,但建议您指定他们在条款 “。

至于第优先级,这里是正确的顺序如下:

SELECT  -- "what" we want 
FROM  -- "where" to look for it 
JOIN 
WHERE  -- condition 
GROUP BY 
HAVING 
ORDER BY -- sorting order