mysql表有a-> b和b-> a值,只选择a-> b组值

时间:2016-01-29 07:22:32

标签: mysql

我有一个有5列的表

  

linkid,orinodeno,orinodeno,ternodeno,terifindex

linkid是自动增量的。 orinifo,oriifindex是一个组合值和ternodeno,terifindex其他组合(orinodeno,oriifindex是起源值和ternodeno,terifindex终止值,即在两者之间有一个链接,例如就像连接链接之间的地图两个点)所以我的表包含a->b值(即a是orinodeno,oriifindex和b的组合是ternodeno,terifindex的组合)和b-> a值。所以我必须只选择a->b个值而不是b->a。还发送我的表格图像。 My Table

2 个答案:

答案 0 :(得分:0)

在sql数据库中没有映射定义,忘了它。检查任何database normalization tutorial。那么你不应该对select语句有任何问题。

答案 1 :(得分:0)

请明确您的要求。如果您无法用语言解释,请提供示例输入和您的预期输出。

从您提供的表格图像的链接和描述,看起来您期望以下:

当前表中的数据:

------------------------------------------------------------------
|linkid | orinodenumber | oriifindex | ternodenumber | terifindex|
------------------------------------------------------------------
|305    | 261           | 2          | 309           | 2         |
|306    | 309           | 2          | 261           | 2         |
|307    | 257           | 10         | 310           | 10        |
|308    | 310           | 10         | 257           | 10        |
|309    | 257           | 11         | 310           | 11        |
------------------------------------------------------------------

预期产出:

------------------------------------------------------------------
|linkid | orinodenumber | oriifindex | ternodenumber | terifindex|
------------------------------------------------------------------
|305    | 261           | 2          | 309           | 2         |
|307    | 257           | 10         | 310           | 10        |
------------------------------------------------------------------

如果是这种情况,以下查询可能会对您有所帮助(假设表名为link_table):

SELECT *
FROM link_table o
WHERE EXISTS (SELECT linkid 
              FROM link_table i 
              WHERE o.orinodenumber = i.ternodenumber 
              AND o.oriifindex = i.terifindex 
              AND o.linkid < i.linkid);