我的表有以下数据,
ID name devID
1 abc 101
2 def 111
3 ghi 121
4 abc 102
5 def 110
我想根据以下条件选择行(ID,name,devID):
一个 . 名称abc的devID值已增加1,因此结果中只显示更高值的记录(仅102)
湾名称def的devID值减1,应显示所有记录(111和110)
此外,我们将继续添加不同行的记录,每个名称在表中不会超过2行或最多3行,因此上述条件应始终为true .
请帮我解决这个问题 . 提前致谢 .
4 回答
如果我正确理解了您的问题,以下内容可以帮助您解决问题:
SQL Fiddle: http://www.sqlfiddle.com/#!3/b14513/18
此代码仅导致
DEVID
更大(或相等)的行与最后插入的名称为Name
的DEVID
的行显示 .Results
Update (查询可以进一步简化):
索引也应该放在ID和devID中 .
我使用了增量方法 . 我没有真正看到另一种选择 . 这回报你需要的东西我相信:
编辑:结果:
使用
INNER JOIN
本身和UNION
结果可能是一个很好的方法 .SQL Fiddle
如果我理解正确,你只需要获得 latest devID(如下所示) .
所以 why bother with Joins and stuff ,如果这个简单的方法也有效:
你的记录:
您的预期结果(也用小提琴手检查)