MySQL查询连接表

时间:2012-03-30 09:00:22

标签: mysql jointable

两次搜索都会带回正确的结果,但是当我尝试将两个查询结合起来时,最终会产生不良结果。

$query3 = "SELECT *
FROM airport_countries, airports
WHERE airports.iso_country=airport_countries.code &&
airport_countries.name like '%$search%'
ORDER BY pageviews DESC";

$query2 = "SELECT * 
    FROM airports 
    WHERE name like '%$search%' or 
municipality like '%$search%'
ORDER BY pageviews DESC";

VVVVVVVVV

SELECT *
FROM airport_countries, airports
WHERE airports.iso_country=airport_countries.code &&
airport_countries.name like '%$search%' or
    airports.name like '%$search%'  or 
airports. municipality like '%$search%'
ORDER BY pageviews DESC

我做错了什么?

1 个答案:

答案 0 :(得分:4)

你的问题似乎是operator precedence。要避免这种情况,只需使用大括号:

SELECT *
FROM airport_countries, airports
WHERE airports.iso_country=airport_countries.code
AND (
    airport_countries.name LIKE '%$search%'
    OR airports.name LIKE '%$search%'
    OR airports. municipality LIKE '%$search%'
    )
ORDER BY pageviews DESC

我还建议使用AND代替&&(您正在撰写or代替|| - 看起来不是很明显一致),但这只是我的意见,为了更好的可读性,不应该造成任何差异。