那将是其中之一:
SELECt * FROM people WHERe fname IN ('Elvis', 'Richard');SELECt * FROM people WHERe fname = 'Elvis' OR fname = 'Richard';我很惊讶您的第一个查询甚至可以工作,而在您的第二个查询中,
or 'Richard'基本上意味着
or 1=1对表中的每一行总是如此。
您的计算机不像您那样思考。即使
fname = 'Elvis' or'Richard'对您来说似乎很明显,RDBMS也不知道您的意思,而是显示“如果fname等于’Elvis’或…
true”。它将字符串评估为布尔值,并且我假设由于字符串不为空,因此将其评估为true。就像我前面说的,然后继续从表中选择每一行。



