选择From Multiple Tables mysql

时间:2012-02-10 05:47:14

标签: php mysql

我的数据库中有5个表具有相同的表结构

我试图从所有表中选择like关键字 然后我得到一个错误 错误是

Column 'TitleLine' in where clause is ambiguous

正在执行的查询是

select * from equitymarketnews,economynews,corporatenews,industrynews where TitleLine Like '%axis Bank%' OR StoryMain like '%axis Bank%';
谁能告诉我哪里出错了?

我知道这可以通过UNION来完成 谁能举个例子?

5 个答案:

答案 0 :(得分:1)

您需要在关闭的位置限定列。如果TitleLine列位于equitymarketnews表中且StoryMain位于corporatenews中,则查询应该是

select * from equitymarketnews,economicnews,corporatenews,industrynews where equitymarketnews.TitleLine Like'%axis Bank%'OR corporatenews.StoryMain like'%axis Bank%';

你在这里遇到的另一个问题是你没有在表之间加入。阅读内部联接http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

答案 1 :(得分:1)

您可能不希望像这样设计您的表,但是当您拥有相同的命名列并且可以引用任一表时,您需要执行tableName.columnName以使mysql理解。对于一个联合,只需将它们中的每一个分解为它自己的选择然后将它们联合起来就像这样(所有一个语句)

select * from equitymarketnews where TitleLine Like '%axis Bank%' OR StoryMain like '%axis Bank%' 
UNION select * from economynews where TitleLine Like '%axis Bank%' OR StoryMain like '%axis Bank%' 
UNION select * from corporatenews where TitleLine Like '%axis Bank%' OR StoryMain like '%axis Bank%' 
UNION select * from industrynews where TitleLine Like '%axis Bank%' OR StoryMain like '%axis Bank%';

here是联盟的良好开端

答案 2 :(得分:0)

如果存在相同的列名,请使用表别名。 假设你想从industrynews查看 然后使用industrynews.TitleLine Like '%axis Bank%'

如果您想要检查所有表格,请对每张表格使用相同的表格,并按照您的期望使用 使用AND,OR运算符。

答案 3 :(得分:0)

通过表名

为列名添加前缀

e.g。 tablename.column

所以您的查询变为

select * from equitymarketnews,economynews,corporatenews,industrynews where TABLE_NAME.TitleLine Like     '%axis Bank%' OR TABLE_NAME.StoryMain like '%axis Bank%';

将TABLE_NAME替换为包含优化查询的列的表名

答案 4 :(得分:0)

这意味着您在查询中引用的2个或更多表中具有相同的列名。您需要完全限定列名