SELECT T1.val,T2.val,T3.val FROM T1 , T2 , T3
WHERE T1.val <> T2.val AND T2.val <> T3.val AND T1.val <> T3.val
GROUP BY T1.val,T2.val,T3.val,(T1.no + T2.no + T3.no)
HAVING (T1.no + T2.no + T3.no) =
(SELECT MIN(T1.no)+MIN(T2.no)+MIN(T3.no) FROM T1 , T2 , T3
WHERE T1.val <> T2.val AND T2.val <> T3.val AND T1.val <> T3.val)
如果有3个以上的表,只需在FROM T1 , T2 , T3, T4,..TN 之后添加表即可
并通过在where子句中添加此项来添加不相等的比较 T1.val <> T4.val AND T2.val <> T4.val AND T3.val <>T4.val对于每个表//这是为T4添加的
select min(t1.value + t2.value + t3.value)
from table1 t1 cross join table2 t2 cross join table3 t3
where t1.name <> t2.name and t3.name not in (t1.name, t2.name);
或者,如果你想知道名字:
select (t1.value + t2.value + t3.value), t1.name, t2.name, t3.name
from table1 t1 cross join table2 t2 cross join table3 t3
where t1.name <> t2.name and t3.name not in (t1.name, t2.name)
order by (t1.value + t2.value + t3.value)
limit 1
你可以试试这个
如果有3个以上的表,只需在
FROM T1 , T2 , T3, T4,..TN
之后添加表即可 并通过在where子句中添加此项来添加不相等的比较
T1.val <> T4.val AND T2.val <> T4.val AND T3.val <>T4.val
对于每个表//这是为T4添加的首先,SQL表表示无序集。因此,基于位置的两个表之间没有对应关系。相反,让我假设每个都有一个
name
列。你知道吗第二,SQL并不能真正实现优化,所以您需要以一种暴力的方式来实现这一点。也就是说,生成所有组合,然后选择最小值。你知道吗
基本上使用
cross join
:或者,如果你想知道名字:
相关问题 更多 >
编程相关推荐