2012-02-10 102 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