0
我希望我可以解释自己很好,所以我有2个表与一对多连接(TableA和TableB)。现在,TableB具有一个具有外键表格A的列和一个指向第三TableC的ID(外键)。现在,一般2〜3排从TableA的共享相同的FK,这是我可能的情况:如果存在,选择非空值,否则为空,但始终选择行
- 具有相同FK_TableA所有行具有相同的FK_TableC
- 具有相同FK_TableA所有行已为NULL FK_TableC
与同FK_TableA所有行具有NULL或相同FK_TableC像这样:
TableB ---------------------------- |ID| FK_TableA | FK_TableC | ---------------------------- |1 | 123 | 321 | |2 | 123 | 321 | |3 | 123 | NULL | ----------------------------
因此两行不能有相同的FK_TableA和DIFF erent FK_TableC可以是相同的,也可以是另一个是空或全为空。
现在我的问题是如何根据FK_TableA区别地选择FK_TableC,所以如果FK_TableA的任何一行有一个值(非空值),选择该值,否则返回null并将结果加入到TableA中?
我一直在尝试JOINS和FROM - WHERE,但我总是要失去或双行。所以从上面的表中我需要选择像这样:
TmpTable
-------------------------
| FK_TableA | FK_TableC |
-------------------------
| 123 | 321 | => From Above
| 124 | NULL | => If all FK_TableC ware null
| 125 | 325 | => If at least one or all FK_TableC ware 325
-------------------------
在此先感谢您。
因此,等待,对于上面的表,你期望得到所有这三行?或只是第一个或?.. – sagi
只是非空值如果存在,但我认为我发布这个问题太快,我想我找到了答案使用MAX和GROUP BY –
仍然不明白,但欢呼声。我认为你现在可以删除这个问题。 – sagi