如何添加一个NOT子句到我的SQL查询
问题描述:
我想一个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移动到更高数字的成员,因为我不想永久删除人员以防他们后来改变主意。
谢谢。
答
由于您正在使用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
答
你可以尝试这样的:
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
答
我觉得下面应该工作,如果没有的话,请注明错误,你得到了,你只需要前缀表名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
答
据“数据库管理基础”,下面将是适当的语法:
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报表既可以在FROM或WHERE 子句指定,但建议您指定他们在从条款 “。
至于第优先级,这里是正确的顺序如下:
SELECT -- "what" we want
FROM -- "where" to look for it
JOIN
WHERE -- condition
GROUP BY
HAVING
ORDER BY -- sorting order
你'Member_Id'列在查询的两个表存在。你需要指定表名。 –
您需要在Member_id前面添加一个表名,因为它是有意义的。 – orhtej2
如果您指定了任何错误,那么会更好,否则在where子句中会出现一个错误,您必须指定表别名,因为两个表中都存在“Member_id” –