Php 禁用唯一sql行结果约束
我在一个表中循环,任务,存储每个任务的NPC id,然后在表中循环,返回每个NPC id的所有NPC数据 红色框中的值应返回 表:任务 表:NPCPhp 禁用唯一sql行结果约束,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,我在一个表中循环,任务,存储每个任务的NPC id,然后在表中循环,返回每个NPC id的所有NPC数据 红色框中的值应返回 表:任务 表:NPC 我正在遍历从任务表接收到的所有NPC_ID,并转储数组以确保它没有丢失任何数据。没有数据丢失 var_dump($allNPCIDs)//所有5个结果 然后转储查询以确保内爆字符串没有丢失任何数据。没有数据丢失 var_dump($qry)//查询显示所有5个结果 问题: 但是当我转储$row时,我丢失了重复的npd\u id: var
- 我正在遍历从任务表接收到的所有NPC_ID,并转储数组以确保它没有丢失任何数据。没有数据丢失
var_dump($allNPCIDs)//所有5个结果
- 然后转储查询以确保内爆字符串没有丢失任何数据。没有数据丢失
var_dump($qry)//查询显示所有5个结果
- 但是当我转储
时,我丢失了重复的npd\u id:$row
var_dump($row)//缺少1行,重复的npc\u id
如何关闭phpMyAdmin mySQL数据库中删除重复行数据的约束?这不是一个可以关闭的约束。这是您正在执行的查询的结构。使用IN(1,2,3,4,1)与使用IN(1,2,3,4)相同。这只是筛选npcs表并决定是否选择特定行的条件。将id列出两次不会使该行在npcs表中存在两次。。。因此不能选择两次 你想要的东西不能用这个选择来完成 您可以使用工会:
(SELECT * FROM npcs WHERE npc_id=1) UNION
(SELECT * FROM npcs WHERE npc_id=2) UNION
(SELECT * FROM npcs WHERE npc_id=3) UNION
(SELECT * FROM npcs WHERE npc_id=4) UNION
(SELECT * FROM npcs WHERE npc_id=1)
或者首先在临时表中插入ID,然后选择如下:
SELECT N.* FROM npcs N JOIN temptable T on N.npc_id=T.npc_id
或者,您可以在客户端通过一个循环执行对每个ID的查询,并将数据放在一起
可能还有其他解决方案,但现在还没有想到。这不是一个可以关闭的约束。这是您正在执行的查询的结构。使用IN(1,2,3,4,1)与使用IN(1,2,3,4)相同。这只是筛选npcs表并决定是否选择特定行的条件。将id列出两次不会使该行在npcs表中存在两次。。。因此不能选择两次 你想要的东西不能用这个选择来完成 您可以使用工会:
(SELECT * FROM npcs WHERE npc_id=1) UNION
(SELECT * FROM npcs WHERE npc_id=2) UNION
(SELECT * FROM npcs WHERE npc_id=3) UNION
(SELECT * FROM npcs WHERE npc_id=4) UNION
(SELECT * FROM npcs WHERE npc_id=1)
或者首先在临时表中插入ID,然后选择如下:
SELECT N.* FROM npcs N JOIN temptable T on N.npc_id=T.npc_id
或者,您可以在客户端通过一个循环执行对每个ID的查询,并将数据放在一起
可能还有其他解决方案,但现在还没有想到。这不是一个可以关闭的约束。这是您正在执行的查询的结构。使用IN(1,2,3,4,1)与使用IN(1,2,3,4)相同。这只是筛选npcs表并决定是否选择特定行的条件。将id列出两次不会使该行在npcs表中存在两次。。。因此不能选择两次 你想要的东西不能用这个选择来完成 您可以使用工会:
(SELECT * FROM npcs WHERE npc_id=1) UNION
(SELECT * FROM npcs WHERE npc_id=2) UNION
(SELECT * FROM npcs WHERE npc_id=3) UNION
(SELECT * FROM npcs WHERE npc_id=4) UNION
(SELECT * FROM npcs WHERE npc_id=1)
或者首先在临时表中插入ID,然后选择如下:
SELECT N.* FROM npcs N JOIN temptable T on N.npc_id=T.npc_id
或者,您可以在客户端通过一个循环执行对每个ID的查询,并将数据放在一起
可能还有其他解决方案,但现在还没有想到。这不是一个可以关闭的约束。这是您正在执行的查询的结构。使用IN(1,2,3,4,1)与使用IN(1,2,3,4)相同。这只是筛选npcs表并决定是否选择特定行的条件。将id列出两次不会使该行在npcs表中存在两次。。。因此不能选择两次 你想要的东西不能用这个选择来完成 您可以使用工会:
(SELECT * FROM npcs WHERE npc_id=1) UNION
(SELECT * FROM npcs WHERE npc_id=2) UNION
(SELECT * FROM npcs WHERE npc_id=3) UNION
(SELECT * FROM npcs WHERE npc_id=4) UNION
(SELECT * FROM npcs WHERE npc_id=1)
或者首先在临时表中插入ID,然后选择如下:
SELECT N.* FROM npcs N JOIN temptable T on N.npc_id=T.npc_id
或者,您可以在客户端通过一个循环执行对每个ID的查询,并将数据放在一起
可能还有其他解决方案,但现在还没有想到它们。这在phpMyAdmin中没有限制,但SQL是如何工作的。
SELECT N.*FROM npcs N
将返回5行(npc_id 1到5)<代码>其中将此限制为与您的条件匹配的行。如果重复条件,则不会得到额外的行
您可以将表格任务中的列npc_id提取到具有列quest_id和npc_id的查找表格quests_to_npc中。这将为任务中的每个npc包含一行。
您的查询可能如下所示:
选择n*
从作为q的任务开始
在q.quest\u id=q2n.quest\u id上以q2n的形式将任务\u加入到\u NPC中
在q2n.npc_id=n.npc_id
这在phpMyAdmin中不是约束,而是SQL的工作方式。
SELECT N.*FROM npcs N
将返回5行(npc_id 1到5)<代码>其中将此限制为与您的条件匹配的行。如果重复条件,则不会得到额外的行
您可以将表格任务中的列npc_id提取到具有列quest_id和npc_id的查找表格quests_to_npc中。这将为任务中的每个npc包含一行。
您的查询可能如下所示:
选择n*
从作为q的任务开始
在q.quest\u id=q2n.quest\u id上以q2n的形式将任务\u加入到\u NPC中
在q2n.npc_id=n.npc_id
这在phpMyAdmin中不是约束,而是SQL的工作方式。
SELECT N.*FROM npcs N
将返回5行(npc_id 1到5)<代码>其中将此限制为与您的条件匹配的行。如果重复条件,则不会得到额外的行
您可以将表格任务中的列npc_id提取到具有列quest_id和npc_id的查找表格quests_to_npc中。这将为任务中的每个npc包含一行。
您的查询可能如下所示:
选择n*
从作为q的任务开始
在q.quest\u id=q2n.quest\u id上以q2n的形式将任务\u加入到\u NPC中
在q2n.npc_id=n.npc_id
这在phpMyAdmin中不是约束,而是SQL的工作方式。
SELECT N.*FROM npcs N
将返回5行(npc_id 1到5)<代码>其中对此进行了限制