我有一张这样的桌子
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
}请帮帮忙
发布于 2012-04-02 13:09:16
查询
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是一个主键,所以它是唯一的,所以你遇到了“问题”。如果希望在插入时允许重复行,请删除主键。如果您需要它,请考虑上面建议的可能的解决方案。
发布于 2012-04-02 13:07:28
您必须使id唯一,不同行具有相同的id,因此不能同时获取这两行。
发布于 2012-04-02 13:31:55
尝试联合所有
(SELECT name,id FROM tblname WHERE id IN (1,2,7,6)) UNION ALL (SELECT name,id FROM tblname WHERE id IN (1))https://stackoverflow.com/questions/9971098
复制相似问题