MySql查询两列中具有相同值的行
我有一张桌子,我的桌子上有这个MySql查询两列中具有相同值的行,mysql,Mysql,我有一张桌子,我的桌子上有这个 id date value1 value2 1 2016-09-16 1 null 2 2016-09-16 null null 3 2016-09-16 3 null 4 2017-01-16 2 null 5 2017-01-16 null 1 6 2017-01-16
id date value1 value2
1 2016-09-16 1 null
2 2016-09-16 null null
3 2016-09-16 3 null
4 2017-01-16 2 null
5 2017-01-16 null 1
6 2017-01-16 null 34
7 2017-01-16 null 3
需要它返回在value1和value2中具有匹配值的行
在上面,我需要返回第1、3、5、7行
如果可能,按日期排序,value2只需添加带有value1的Where子句不为空,value2不为空,尝试以下操作:
select
*
from
my_table t
where
t.value1 in
(select value2 from my_table)
or
t.value2 in
(select value1 from my_table)
order by
t.date, t.value2
具有联接的不同格式输出:
SELECT
myt.id as 'ID1',
myt2.id as 'ID2',
myt.value1 as 'Value1',
myt2.value2 as 'Value2'
FROM
MyTable as myt
INNER JOIN MyTable as myt2
WHERE
myt.value1 = myt2.value2
收益率:
ID1 ID2 Value1 Value2
1 5 1 1
3 7 3 3
匹配值1和值2?在您预期的结果中,这是不正确的。对不起,在返回单词之前出现了拼写错误,已修复。行1和行5在值1和值2中具有匹配的值。第3行和第7行在value1和value2中具有匹配的值。需要返回所有这些行。这将返回第6行,该行与另一行不匹配。获取与该行不匹配的结果。返回第3行和第7行,但不返回第1行和第5行..如果正确的话。等等,重复检查,这可能是正确的。是的,就是这样,我的数据库没有像我的示例那样有两套。这是相当棘手的,我在想这样的事情,而不是用=也可以工作: