2012-02-10 105 views
1

我在我与相同的表结构的数据库表5个选择从多个表的mysql

想从关键词中 那么所有表中选择正在一个埃罗 误差

Column 'TitleLine' in where clause is ambiguous 

正在执行的查询是

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

谁能告诉我我在哪里做错了?

我知道这可以通过联盟 任何人都可以给我例子吗?

回答

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是工会

一个良好的开端
0

如果存在相同的列名,则使用表别名。 假设你想从行业动态 检查,然后使用industrynews.TitleLine Like '%axis Bank%'

如果你想从所有表来检查,然后使用相同的每个表和你的期望 使用AND,OR操作。

0

以表名称作为表名的前缀

例如, tablename.column

所以你的查询变得

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

与认为它优化查询

0

列那只是意味着你在2代或多个表具有相同的列名表名替换TABLE_NAME在您的查询中引用。您需要完全限定列名称

1

您需要限定您的列在哪里关闭。如果TitleLine列是equitymarketnews表和StoryMain在corporatenews,比你的查询应该是

SELECT * FROM equitymarketnews,economynews,corporatenews,行业动态,其中equitymarketnews.TitleLine LIKE '%轴线银行%' 或corporatenews.StoryMain如'%axis Bank%';

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