在MySQL中显示多行

时间:2012-04-02 05:00:32

标签: php mysql arrays mysqli

我有一张这样的桌子

id   |   name 
------------------
1    |   SAM1
2    |   SAM2
1    |   SAM1
3    |   SAM3
7    |   SAM7
6    |   SAM6

我需要使用此查询显示结果

SELECT name,id FROM tblnameWHERE id IN (1,2,7,6,1)

并获得以下结果

id   |   name 
------------------
1    |   SAM1
2    |   SAM2
7    |   SAM7
6    |   SAM6

我的问题是这个跳过的最后一个id,即1。我需要这样的东西

id   |   name 
------------------
1    |   SAM1
2    |   SAM2
7    |   SAM7
6    |   SAM6
1    |   SAM1

没有使用循环查询(如下所示)任何其他方法来执行此操作?

$ids=array(1,2,7,6,1);
$i=0;
foreach($ids as $id){

$sql=mysql_query("SELECT * FROM tblname WHERE id=$id");
// Store value to array 

}

请帮忙

6 个答案:

答案 0 :(得分:2)

查询

SELECT name,id FROM tblname WHERE id IN (1,2,7,6);

应该显示重复的行;例如如果表中有真正的两个具有相同id的不同行,那么查询将显示它们(因为没有DISTINCT关键字)。

相反,如果要从包含单行的表开始创建重复行,则必须使用重复为1的表(在您的情况下)加入表;另一种方式可能是使用这样的联盟:

SELECT  name, id FROM tblname WHERE id IN (1,2,7,6)
  UNION ALL
SELECT name, id FROM tblname WHERE id = 1;

修改

由于您的ID是主键,因此它将是唯一的,因此您遇到了“问题”。如果要在插入时允许重复行,请删除主键。如果您需要,请考虑上面建议的可能解决方案。

答案 1 :(得分:1)

你必须使id唯一,你对不同的行有相同的id,因此你不能同时获得这两行。

答案 2 :(得分:1)

你所尝试的是错误的。

两个字段都具有相同的ID和相同的值。你说id是你桌上的主要钥匙。

  

主键之间不能重复主键。 这是拥有主键的重点

您不能将id字段声明为主键。

  • 删除底行
  • 将主键添加到该字段,运行此查询

    ALTER TABLE `tablename` ADD PRIMARY KEY(id) AUTO_INCREMENT
    

现在从现在开始,您将拥有所有记录的唯一ID,并且您在选择行时没有任何问题。

答案 3 :(得分:1)

尝试联合所有

(SELECT name,id FROM tblname WHERE id IN (1,2,7,6)) UNION ALL (SELECT name,id FROM tblname WHERE id IN (1))

答案 4 :(得分:1)

正如你所说id是主键 您不能为该字段插入重复的条目 因此,id为1的第二个插入可能失败

SELECT name,id FROM tblname

它不会显示id为1的第二个条目

因为主键应该是唯一的。

所以你得到的就是你在数据库中拥有的东西。

答案 5 :(得分:1)

您可以尝试使用表

中的更改
SELECT name,id FROM tblname WHERE id IN (1,2,7,6,1) GROUP BY id