查询MySQL的字母数字&第一个15


Query MySQL by alphanumeric & first 15

我需要一些帮助写一个MySQL查询。它需要查看所有记录,然后在字母-数字范围内按首字母排序(例如数字&然后在$results中只返回前15个(按字母数字顺序)

要搜索的字段是'name'

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

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

For Alpha Range:

$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");

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

我做错了什么-试图列出1 -3,然后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'];
  }
  ...
}

回显代码:

<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>

这样做-

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

你可能不应该有一个名为'name'的列。这些类型的通用词通常是由你正在使用的系统保留的。

如果你需要更专业的东西,比如限制在字母表的某个部分,你的查询开始变得更加复杂。

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

马上做语法,你必须根据你的情况进行测试。