2017-03-16 175 views
0
company_name | macid   | expiry_date 
--------------------------------------------- 
abc   | 123456789012 | 2017-03-23 
qwe   |12 | 2018-05-24 
asd   | 456789123012 | 2019-07-07 
abc   | 789456123000 | 2017-03-23 
abc   | 445544444444 | 2018-03-03 
abc   | 555555555555 | 2017-03-25 


company_name | desktop   | server 
abc   123456789012  555555555555 
       789456123000 

我有上面的兩個表,我想所有macid和expiry date是存在於table1和table2。此外,我已將所有macid作爲新行和桌面macid和服務器macid存儲在不同的列中。我的查詢mysql查詢加入兩個表格like

"select a.macid,a.expity_date from table1 a,table2 b where a.macid like b.desktop or a.macid like %'b.server%'" 

但顯示結果爲空。請幫忙解決。

我想導致

macid   | expiry_date 
--------------------------------------------- 
123456789012 | 2017-03-23 
789456123000 | 2017-03-23 
555555555555 | 2017-03-25 

爲表2,如果我要搜索MAC_ID他們,我必須使用

"select * from table2 where desktop like '%123456789012%'" 

而不%我不能檢索記錄(百分比)

回答

0

試試這個:

"select a.macid,a.expity_date from table1 a JOIN table2 b ON (a.macid like b.desktop OR a.macid like b.server)" 
1

Y你必須做出兩個獨立的JOIN然後UINON的結果。

SELECT macid, expiry_date 
FROM table1 JOIN table2 
ON table1.macid = table2.desktop 
UNION 
SELECT macid, expiry_date 
FROM table1 JOIN table2 
ON table1.macid = table2.server 

這裏的工作演示:http://sqlfiddle.com/#!9/dccea43/1

2

我覺得這只是一個錯字,不expity_date,這是expiry_date在您的查詢,請參閱demo

select a.macid, a.expiry_date 
from table1 a, table2 b 
where a.macid like b.desktop or a.macid like b.server 

然而,更更好地使用join不是一個逗號(,)做的事情加盟:

select a.macid, a.expiry_date 
from table1 a 
join table2 b 
on a.macid like b.desktop or a.macid like b.server 

還要檢查demo這裏。
另一件事是,如果desktopservermacid相同,則只需使用equal(=)即可。

+0

我提到我的所有數據都是以新行的形式存儲的。所以我必須用%% – LOKESH

+0

@LOKESH來查詢,然後用'like' :) – Blank