为什么这个简单的MySQL语句不起作用?

时间:2010-04-06 23:22:00

标签: mysql

我正在尝试将用户输入的搜索字词与两个表格匹配:帖子和图库。问题是union all子句不起作用。我的代码有问题吗?

$query = mysql_query("

    SELECT * FROM posts WHERE title LIKE '%$searchTerm%'
        OR author LIKE '%$searchTerm%'
        OR location LIKE '%$searchTerm%'
        OR excerpt LIKE '%$searchTerm%'
        OR content LIKE '%$searchTerm%'

        UNION ALL

    SELECT * FROM galleries WHERE title LIKE '%$searchTerm%'

        ");

1 个答案:

答案 0 :(得分:1)

当您对两个查询执行UNION ALL时,它要求您以相同的顺序从两个表中获取具有相同数据类型的相同数量的列。由于您正在执行SELECT *,因此这意味着postsgalleries具有完全相同的列数,相同类型的列,顺序相同。我怀疑是这种情况(但我想你可能会很幸运)。


编辑以添加如何使其工作的示例

你需要使列号/类型匹配,你可以用这种方法做(我猜你需要哪些列,只是为我假设的列添加“N / A”在galleries)中不存在:

SELECT title, author, location, excerpt, content
FROM posts
WHERE title LIKE '%$searchTerm%'
    OR author LIKE '%$searchTerm%'
    OR location LIKE '%$searchTerm%'
    OR excerpt LIKE '%$searchTerm%'
    OR content LIKE '%$searchTerm%'

UNION ALL

SELECT title, 'N/A', 'N/A', 'N/A', 'N/A'
FROM galleries
WHERE title LIKE '%$searchTerm%'