我需要一些帮助来编写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>
答案 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
完全掌握语法,你必须测试你的情况。