Mysql Right join with mutiple condtion not working
table2.fname cannot be both 'city' and 'name' in the same row.

To get both of this EAV model we use two joins on the table2 with a different alias.

Its unclear why you want a RIGHT JOIN. Normal [inner] JOIN is fine.

I've moved the selection to a WHERE criteria just for ease of readability. Because its inner it could be put in the ON criteria.

While you can group by table1.orderid when you do this you cannot SELECT table1.* because by grouping their is only one row per orderid and therefore multiple orders matching the same critera cannot return on the same line (without an aggregate function like GROUP_CONCAT).

select table1.*
from table1 
inner JOIN table2 t2name ON 
        t2name.table1_order_id = table1.orderid 
inner JOIN table2 t2city ON 
        t2city.table1_order_id = table1.orderid 

where
    t2name.fname = 'name' 
    AND t2name.field_value LIKE '%karthi%' 
    AND t2city.fname = 'city'
    AND t2city.field_value LIKE '%salem%' 


or

select table1.orderid
from table1 
inner JOIN table2 t2name ON 
        t2name.table1_order_id = table1.orderid 
inner JOIN table2 t2city ON 
        t2city.table1_order_id = table1.orderid     
where
    t2name.fname = 'name' 
    AND t2name.field_value LIKE '%karthi%' 
    AND t2city.fname = 'city'
    AND t2city.field_value LIKE '%salem%' 
group by table1.orderid