MySQL在两列之间选择更高的id,而不考虑字段顺序

MySQL在两列之间选择更高的id,而不考虑字段顺序,mysql,Mysql,我的桌子 现在我想要回这个: 结果 +----+-------+-------+ | ID | name1 | name2 | +----+-------+-------+ | 1 | foo | bar | | 2 | bar | foo | | 3 | alpha | beta | | 4 | foo | alpha | +----+-------+-------+ 我在表中搜索foo。 如果在name1和name2之间找到匹配项,而不考虑字段顺序,则保留最高

我的桌子

现在我想要回这个:

结果

+----+-------+-------+
| ID | name1 | name2 |
+----+-------+-------+
| 1  | foo   | bar   |
| 2  | bar   | foo   |
| 3  | alpha | beta  |
| 4  | foo   | alpha |
+----+-------+-------+
我在表中搜索foo。 如果在name1和name2之间找到匹配项,而不考虑字段顺序,则保留最高id

我已经试过了,但我有一个问题要验证+两列上没有重复项

+----+-------+-------+
| ID | name1 | name2 |
+----+-------+-------+
| 2  | bar   | foo   |
| 4  | foo   | alpha |
+----+-------+-------+

因此,第1行没有被选中,因为第4行的名称1上有foo,但id更高?是的,但foo/bar=bar/foo,而不是foo/alpha这是一个不同的规则,那么它是什么呢?显示名称1上带有foo的最高行+名称2上带有foo的最高行?因此选择行ID 2是因为它是带有条形的最高行,而选择行ID 4是因为它是带有foo或alpha的最高行?
SELECT * 
FROM MyTable
WHERE name1 = 'foo'
OR name2 = 'foo'
AND ID IN (SELECT MAX(ID) FROM MyTable GROUP BY name1) 
ORDER BY ID DESC
select * 
from MyTable t 
where not exitst
   (select * 
    from MyTable t2 
    where t.ID < t2.ID 
      and (t.name1 = t2.name2 OR t.name2 = t2.name1)
  )