MySQL:在不知道该列的值的情况下选择其中 1 列相同的行?
具有以下整数列:
iid、pid、aid
我最终会得到类似的结果:
1,1,1
1,1,2
1,1,3
2,1,1
2,1,2
2,1,4
如果我想选择 iid,其中 pid 为 1,aid 为 1,2,3,最好的方法是什么?执行
SELECT iid WHERE pid=1 and (aid=1 OR aid=2 OR aid=3)
返回除最后一行之外的每一行。
有没有更好的表结构可以使用? pid 是另一个表中的一行,可以有多个值。该表为我提供了 iid,即具有某些值的该行的主 id。不过,没有设定值的数量,所以看起来我需要一个一对多的表,但尝试将其降低到 1 个 iid 似乎效率低下。
With the following integer columns:
iid, pid, aid
I would end up with something like:
1,1,1
1,1,2
1,1,3
2,1,1
2,1,2
2,1,4
If I want to select iid where pid is 1 and aid is 1,2,3, what's the best way to get that? Doing a
SELECT iid WHERE pid=1 and (aid=1 OR aid=2 OR aid=3)
returns every row but the last one.
Is there a better table structure to use? pid is a row in another table that can have several values. This table gives me the iid, a master id for that row with certain values. There is no set number of values, though, so it seems like I need a 1 to many table, but trying to get that down to the 1 iid seems inefficient.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您想使用当前的表结构,您可以执行以下操作来选择您想要的 iid。
通过组查询,您可以查看按 PID 和 IID 分组的 AID 属性。
If you want to use your current table structure, you could do the following to select the iid you want.
With the group query you can see the AID attributes together grouped by PID and then IID.