company_name | macid          |  expiry_date
---------------------------------------------
abc          |  123456789012  |  2017-03-23
qwe          |  987654321012  |  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


我有两个以上的表,我想要在表1和表2中存在的所有macid和到期日期。另外,我还将所有macid存储为换行符,并将桌面macid和服务器macid存储在不同的列中。我的查询

"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


对于table2如果我想搜索mac_id他们必须使用

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


没有%(百分比),我无法检索记录

最佳答案

我认为这只是一个错字,而不是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(=)也可以。

07-24 09:38