2表SQL查询奇怪的结果

时间:2010-06-11 18:18:54

标签: mysql

好的,这让我疯了,我需要编写一个SQL查询,从2个表中获取产品信息。第一个表'products'包含productId,productname,quantityperunit和unitprice。现在我可以单独搜索productname和categoryname,但是当我尝试将2结合起来时,我得到了疯狂的结果,这是查询:

"SELECT DISTINCT productId, productname, quantityperunit, unitprice FROM products pr,
categories ca WHERE pr.categoryID = ca.categoryID AND ProductName LIKE '%" + searchTerm + "%'
OR CategoryName LIKE '%" + searchTerm + "%'

原谅那里的java风格,这里的格式更好:

SELECT DISTINCT productId, productname, quantityperunit, unitprice FROM products pr,
categories ca WHERE pr.categoryID = ca.categoryID AND ProductName LIKE '%Tofu%'
OR CategoryName LIKE '%Tofu%'

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

我无法确定你的“疯狂骚扰”是什么意思,但我猜你的行数比预期多得多。 添加括号:

WHERE pr.categoryID = ca.categoryID AND (ProductName LIKE '%Tofu%'
OR CategoryName LIKE '%Tofu%')

答案 1 :(得分:1)

您的两个示例查询中的LIKE不同。

LIKE '%Tofu%'LIKE 'Tofu'非常不同。

%的行为类似于通配符,因此LIKE '%Tofu%'匹配Big chunk o' Tofu and stuff,但LIKE 'Tofu'与之匹配 - 它只匹配Tofu

你的意思是什么?

(另外,我同意提到你的人应该检查你的括号)