【问题标题】:mysql select nth column from tablemysql从表中选择第n列
【发布时间】:2014-05-12 21:03:47
【问题描述】:

我的数据库表是这样的

   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 name="aa"
我知道该怎么做..
但我想将列分隔到每个 div..
第 1、4、7... ( 1 + (n-1)*3 ) 个名称=aa 的图像转到 div#first
2nd,5th,8th... ( 2 + (n-1)*3 ) 名称=aa 的图像转到div#second
第 3、6、9... ( 3 + (n-1)*3 ) 个名称=aa 的图像转到 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 做到这一点 对不起我的英语不好

【问题讨论】:

  • div#third,我猜应该有ee.jpg
  • 只需在php中使用一个循环。

标签: php html mysql


【解决方案1】:

这里的重点似乎是数据选择。为此,可以使用模运算。因此,在第一个 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 在 name='aa' 的子集中没有增加 1)。然后你可以另外插入一个ROW_NUMBER()-like 步骤,参见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

对其他人也同样尝试。

【讨论】:

  • "SELECT * FROM (SELECT t.*, @rownum := @rownum + 1 AS rownum FROM n3_i t, (SELECT @rownum := 0) r) WHERE by='1'和 MOD(rownum,4)=0";我将查询更改为此,n3_i 是表,我需要将其分隔为 4.. 但结果是警告:mysql_num_rows() 期望参数 1 是资源,在 C:\xampp\htdocs\keralap\ 中给出的布尔值a.php 在第 68 行
【解决方案2】:

这个问题的答案不起作用.. 所以我用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>

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多