通过字母数字和字母查询MySQL前15

时间:2014-05-20 18:55:40

标签: php mysql sql sql-order-by

我需要一些帮助来编写MySQL查询。它需要查看所有记录,然后按字母数字范围中的第一个字母对它们进行排序(例如,数字和A-C,然后只返回前15个结果中的字母数字(按字母数字顺序排列)

要搜索的字段是' name'

显示所有的简单结果(我认为15限制是正确的) - 我该如何修改它?

$results = DB::query("SELECT * FROM Mytable ORDER BY ? DESC LIMIT 15");

对于Alpha范围:

$results = DB::query("SELECT substr(theme, 1, 1) as Alphabet
  FROM gallery ORDER BY (CASE theme
  WHEN '1%' THEN 1
  WHEN '2%' THEN 2
  WHEN '3%' THEN 3
  WHEN 'A%' THEN 4
  WHEN 'B%' THEN 5
  ELSE -1
  END) LIMIT 15");

获取:错误:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便使用正确的语法(')LIMIT 15'

我做错了什么 - 试图列出1' s-3&s,然后是A-B。

Update2:在上面更正后的查询中,我有一个简单的foreach来分配变量,然后在内容中有变量回波:

$x = 0
foreach ($results as $row) {
  $x++;
  if ($x == 1) {  // first in query
    $t1 = $row['theme'];
    $d1 = $row['developer'];
    $th1 = $row['thumb'];
  }
  ...
}

什么都没有显示,在分配变量时我有什么不同吗?

更新3:你的意思是?仍然没有显示。

$x = 0
while ($row = mysql_fetch_array($results)) {
  $x++;
  if ($x == 1) {  // first in query
    $t1 = $row['theme'];
    $d1 = $row['developer'];
    $th1 = $row['thumb'];
  }
  ...
}

Echo Ex。身体:

<img src="<?php echo($th1); ?>" alt="<?php echo($t1); ?>" />
<span><p class="hname"><?php echo($t1); ?></p>
<p class="hdev"><?php echo($d1); ?></p></span>

1 个答案:

答案 0 :(得分:1)

这样做 -

$results = DB::query("SELECT * FROM Mytable ORDER BY name DESC LIMIT 15");

你可能不应该有一个名为&#39; name&#39;的列。虽然。这些通用词通常由您正在使用的系统保留。

如果您需要更专业的内容,例如限制字母表的某个部分,您的查询就会变得更加复杂。

SELECT substr(name, 1, 1) as Alphabet
FROM MyTable
ORDER BY (CASE name
    WHEN 'D%'    THEN 1
    WHEN 'E%'    THEN 2
    WHEN 'F%'    THEN 3
    ELSE -1
    END
)
LIMIT 15

完全掌握语法,你必须测试你的情况。