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)
)