从联合中选择给出未捕获的错误异常

时间:2014-05-16 15:23:10

标签: sql union wildcard

这是一个未被捕获的错误异常

我只想从两个没有关系但却恰好具有相同列名的表中进行选择。 你知道导致错误的原因还是更好的查询错误?

        SELECT product_id, name , meta_keyword , category_id FROM 
        oc_product_description WHERE name LIKE '%$word%'
        UNION ALL 
        SELECT name as 'category_name' FROM 
        oc_category_description WHERE name LIKE '%$word%');

2 个答案:

答案 0 :(得分:0)

使用UNION语句时,SELECT语句中的列必须匹配。但是,您的错误听起来不像是SQL错误,而是来自您使用的语言的异常,可能是Java或C#?您可能必须使用try-catch块包围SQL语句并处理SQL异常或类似的东西。

答案 1 :(得分:0)

union的组件应具有相同数量的列(具有兼容类型) - 至少在大多数数据库中。试试这个版本:

SELECT product_id, name , meta_keyword , category_id
FROM oc_product_description
WHERE name LIKE '%$word%'
UNION ALL 
SELECT NULL, name, NULL, NULL
FROM oc_category_description
WHERE name LIKE '%$word%'");

这似乎是一件不寻常的事情。如果我不得不猜测,你真的不想要union all查询。但这将解决语法问题。