我有一张这样的 table
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
}
请帮忙
最佳答案
查询
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 是主键,它将是唯一的,因此您遇到的“问题”。如果要允许插入重复行,请删除主键。如果您需要,请考虑上面建议的可能解决方案。
关于php - 在 MySQL 中显示多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9971098/