有没有办法在一个且只有一个可能的条件下将两个表连接在一起?加入条件" a"或" b"可以复制行,但我希望只加入一次。我提出了一个潜在的解决方案,但我想知道是否有更光滑的方式来做它。
例如:
public string CharPtrToString(MycharArray chararray)
{
IntPtr ipp = (IntPtr)chararray;
string s = Marshal.PtrToStringAnsi(ipp)
//need to free Ipp?
return s;
}
public struct MyStruct
{
public Int int1;
public MyCharArray charArray;
}
public unsafe struct MyCharArray
{
public char* charPointer;
}
这会将表连接到col1或col2但不能同时加入。有没有更简洁的方法呢?
答案 0 :(得分:0)
效率不高但我认为更清楚
SELECT *
FROM TableA a
LEFT JOIN TableB b
ON (a.col1 = b.col1 or a.col2 = b.col2)
AND NOT (a.col1 = b.col1 and a.col2 = b.col2)
答案 1 :(得分:0)
你的方法有效。如果您只需要url('', include('django.contrib.auth.urls')),
中的一列(或少数几列),我建议:
b
从SELECT a.*, COALESCE(b.col3, b2.col3)
FROM TableA a LEFT JOIN
TableB b
ON a.col1 = b.col1 LEFT JOIN
TableB b2
ON a.col1 <> b2.col1 AND a.col2 = b2.col2;
条件中删除OR
允许优化器生成更好的执行计划。