mysql – SQL查询,它将根据另一列中的值省略具有相同ID的记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – SQL查询,它将根据另一列中的值省略具有相同ID的记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2046字,纯文字阅读大概需要3分钟。
内容图文
![mysql – SQL查询,它将根据另一列中的值省略具有相同ID的记录](/upload/InfoBanner/zyjiaocheng/897/1e09c9c2ca104021821c5e08914b82f9.jpg)
*更新*
经过进一步审查,我使用的表格也有一个亚麻布栏.请参阅下面的更新示例数据我觉得这对解决这个问题非常有帮助….只是不确定如何.通过PO总结行号,如果它等于1,则它是单行,如果它大于1,则它是多行….这对我们做了什么?
在这里和SQL新,所以请原谅我的无知.希望这是一个简单的答案.
希望构建3个类似的查询,这些查询将返回包含多个项目的采购订单,并且:
>包含无批次控制物品
>包含所有批次控制的项目
>包含批次控制和非批次控制项目的混合
数据看起来像这样……
PONUMBER ITEMNUMBER LOTCONTROLLED LINENUMBER
PO1.18 OSC1024 0 1
PO1.18 OSC1025 0 2
PO1.18 OSC1026 0 3
PO1.2 OSC1199 0 1
PO1.2 OSC1200 1 2
PO1.21 OSC1201 1 1
PO1.21 OSC1202 1 2
PO1.22 OSC1203 1 1
PO1.23 OSC1204 1 1
PO1.23 OSC1205 0 2
PO1.24 OSC1206 1 1
PO1.24 OSC1207 1 2
PO1.24 OSC1300 0 3
查询NO Lot Controlled项目效果很好……
SELECT
`POD`.`PONUMBER`,
`POD`.`ITEMNUMBER`,
`POD`.`LOTCONTROLLED`
FROM
table1 AS `POD`
INNER JOIN
(
SELECT `PONUMBER`, COUNT(`PONUMBER`)
FROM table1
WHERE `LOTCONTROLLED` = 0
GROUP BY `PONUMBER`
HAVING (COUNT(`PONUMBER`) > 1)
) as `POD1`
ON `POD`.`PONUMBER` = `POD1`.`PONUMBER`
我认为这将简单到将WHERE LOTCONTROLLED更改为= 1,以获得包含所有批次控制项目的采购订单,但这会返回一些具有混合线的采购订单.
如果任何一条生产线未经批次控制,我如何从包含中删除采购订单?
解决方法:
窗口函数是最简单的方法,但您可能没有.所以,只需使用lotcontrolled的min()和max().基本查询是:
select pod.*
from table1 pod join
(select ponumber, min(lotcontrolled) as min_lc, max(lotcontrolled) as max_lc
from table1 pod
group by ponumber
having count(*) > 1
) p
using (ponumber)
那你的三个条件是:
max_lc = 0 -- no lot controlled
min_lc = 1 -- all lot controlled
min_lc <> max_lc -- mixed
有些人可能更喜欢更冗长的版本:
min_lc = max_lc and max_lc = 0 -- no lot controlled
min_lc = max_lc and max_lc = 1 -- all lot controlled
min_lc <> max_lc -- mixed
内容总结
以上是互联网集市为您收集整理的mysql – SQL查询,它将根据另一列中的值省略具有相同ID的记录全部内容,希望文章能够帮你解决mysql – SQL查询,它将根据另一列中的值省略具有相同ID的记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。