mysql从表中选择第n列

时间:2014-05-11 13:44:10

标签: php html mysql

我的数据库表就像这样

   id | name | image
--------------------------------
   1  | aa   | a.jpg
--------------------------------
   2  | aa   | b.jpg
--------------------------------
   3  | bb   | c.jpg
--------------------------------
   4  | bb   | d.jpg
--------------------------------
   5  | aa   | e.jpg
--------------------------------
   6  | bb   | f.jpg
--------------------------------
   7  | aa   | g.jpg
--------------------------------
   8  | aa   | h.jpg
--------------------------------
   9  | aa   | i.jpg

这是我的HTML

<div id="first">
</div>
<div id="second">
</div>
<div id="third">
</div>

首先,我需要Select * from表名为&#34; aa&#34;
我知道怎么做..
但我想将列分成每个div ..
第1,第4,第7 ......(1 +(n-1)* 3)名称= aa的图像转到div#first
第2,第5,第8 ......(2 +(n-1)* 3)个名称= aa的图像转到div#second
第3,第6,第9 ......(3 +(n-1)* 3)个图像名称= aa GOES to div#third

最后我需要像这样的结果

<div id="first">
  a.jpg
  g.jpg
</div>
<div id="second">
  b.jpg
  h.jpg
</div>
<div id="third">
  e.jpg
  i.jpg
</div>

请告诉我,如何使用PHP,MYSQL执行此操作 抱歉我的英文不好

2 个答案:

答案 0 :(得分:3)

这里的要点似乎是数据选择。为此,可以使用模运算。因此,在第一个div中,使用

插入所有行
SELECT image FROM your_table WHERE name='aa' AND MOD(id,3)=1

在第二个div中插入

的结果
SELECT image FROM your_table WHERE name='aa' AND MOD(id,3)=2

在第三个中:

SELECT image FROM your_table WHERE name='aa' AND MOD(id,3)=0

编辑:等等,它不会像这样直接工作(因为id在名称=&#39; aa&#39;)的子集中没有增加1。然后您还可以插入ROW_NUMBER()之类的步骤,请参阅here。所以这是一个试验(未经测试):

SELECT images
FROM (SELECT t.*,
       @rownum := @rownum + 1 AS rownum
       FROM YOUR_TABLE t, 
       (SELECT @rownum := 0) r
       WHERE t.name='aa')
WHERE MOD(rownum,3)=1

与其他人一样尝试。

答案 1 :(得分:0)

这个问题的答案是行不通的.. 所以我用PHP做了另一种方式..

$a = "";
while($row = mysql_fetch_array(mysql_query("Select * from table where name='aa' "))){
    $a . = $row['image'] . "<!--h-->";
}
$b = explode("<!--h-->",$a);
$c = count($B);
$_a = "";$_b  = "";$_c  = "";$_d = "";
for($i = 1;$i <= $c;$i++ ){
    $rem = $i % 3;
    if($rem == 1){
        $_a .= $b[$num - 1];
    }
    elseif($rem == 2){
        $_b .= $b[$num - 1];
    }
    elseif($rem == 0){
        $_c .= $d[$num - 1];
    }
}

和我的HTML代码

<div id="first">
  <?=$_a?>
</div>
<div id="second">
  <?=$_b?>
</div>
<div id="third">
  <?=$_c?>
</div>