我希望按照它们输入IN()函数的顺序对以下查询中返回的项进行排序.
INPUT:
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
| id | name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Drupal是一个"尽力而为"的CMS.有些模块允许您添加几乎任何功能,这很棒.但是,感觉很多功能(v5和v6)似乎散落在用户身上并且不直观.作为一名开发人员,我留下了使用泡泡糖和字符串拼凑一个网站的感觉.
例如,要将文本添加到默认搜索框(单击时消失),您必须添加一些jQuery代码或覆盖主题.我还发现菜单系统比它应该更复杂.
我是唯一有此意见的人吗?关于Drupal的核心你会改变什么(如果有的话)?
下面是我尝试执行的命令,但没有成功:
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess');
Run Code Online (Sandbox Code Playgroud)
当您在末尾添加die()时,它会捕获到错误:
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess') or die('what?!');
Run Code Online (Sandbox Code Playgroud)
对于上面的exec()语句,权限问题导致错误,但PHP没有显示它.你如何从PHP显示出现了什么错误?
嘿,我一直在调查SQL_BIG_SELECTS,但到目前为止MySQL文档一直没有用.我正在寻找一些见解,以防止出现下面的错误.
错误1104:SELECT会检查太多记录,可能需要很长时间.如果SELECT正常,请检查您的WHERE并使用SET OPTION SQL_BIG_SELECTS = 1
提前致谢!
所以我有一个需要使用mysql_query()加载的SQL转储文件.不幸的是,用它执行多个查询是不可能的.
- >不能假设安装了mysql命令行客户端(mysql --help) - 用于直接加载SQL文件
- >不能假设安装了mysqli扩展
/* contents of dump.sql, including comments */
DELETE FROM t3 WHERE body = 'some text; with semicolons; scattered; throughout';
DELETE FROM t2 WHERE name = 'hello';
DELETE FROM t1 WHERE id = 1;
Run Code Online (Sandbox Code Playgroud)
下面的explode()不起作用,因为某些转储内容的值包含分号.
$sql = explode(';', file_get_contents('dump.sql'));
foreach ($sql as $key => $val) {
mysql_query($val);
}
Run Code Online (Sandbox Code Playgroud)
在不修改转储文件的情况下加载SQL的最佳方法是什么?
我使用MySQL为我的网站建立了一个自定义论坛.列表页面本质上是一个包含以下列的表:主题,上次更新和#Reslies.
DB表包含以下列:
id
name
body
date
topic_id
email
Run Code Online (Sandbox Code Playgroud)
一个主题为"0"的topic_id,并回复有自己的母话题的topic_id.
SELECT SQL_CALC_FOUND_ROWS
t.id, t.name, MAX(COALESCE(r.date, t.date)) AS date, COUNT(r.id) AS replies
FROM
wp_pod_tbl_forum t
LEFT OUTER JOIN
wp_pod_tbl_forum r ON (r.topic_id = t.id)
WHERE
t.topic_id = 0
GROUP BY
t.id
ORDER BY
date DESC LIMIT 0,20;
Run Code Online (Sandbox Code Playgroud)
此表中总共有2,100个项目,查询通常需要6秒钟.我在"topic_id"列中添加了一个INDEX,但这没有多大帮助.有没有办法加速这个查询而不进行重大重组?
编辑:还没有完成工作.我似乎无法让下面的例子正常工作.
仅使用MySQL,我知道如果表是新的,是否可以运行insert语句.我成功创建了一个用户变量来查看该表是否存在.问题是你不能使用"WHERE"和insert语句.关于如何使这个工作的任何想法?
// See if the "country" table exists -- saving the result to a variable
SELECT
@table_exists := COUNT(*)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'country';
// Create the table if it doesn't exist
CREATE TABLE IF NOT EXISTS country (
id INT unsigned auto_increment primary key,
name VARCHAR(64)
);
// Insert data into the table if @table_exists > 0
INSERT INTO country (name) VALUES ('Afghanistan'),('Aland Islands') WHERE 0 < @table_exists;
Run Code Online (Sandbox Code Playgroud) 你可能以前看过JavaScript滑块:
http://dev.jquery.com/view/tags/ui/1.5b2/demos/ui.slider.html
我想象的是一个圆形滑块.它将包含圆圈上一个点上的可拖动按钮 - 该按钮可以沿着环的任何位置拖动.该值取决于按钮的位置(想想时钟).
所以我只是建立了一个星级评分系统,并尝试提出一种算法来列出"评分最高"的项目.为简单起见,以下是列:
item_name
average_rating (a decimal from 1 to 5)
num_votes
Run Code Online (Sandbox Code Playgroud)
我试图确定投票数和评级之间的"甜蜜点".例如...
换句话说,num_votes在"Top"中扮演一个因素.
有人知道一种算法非常擅长确定这个"甜蜜点"吗?
提前致谢.
所以最终菜单看起来像这样:
Item B
Item B-1
Item B-1-2
Item B-1-1
Item A
SubItem A-1
SubItem A-2
Item C
Run Code Online (Sandbox Code Playgroud)
基于以下DB记录:
id menu_title parent_menu_id menu_level weight
1 Item A 0 1 1
2 Item B 0 1 0
3 Item C 0 1 2
4 SubItem A-2 1 2 1
5 Item B-1 2 2 0
6 Item B-1-1 5 3 1
7 SubItem A-1 1 2 0
8 Item B-1-2 5 3 0
Run Code Online (Sandbox Code Playgroud)
我该怎么去展示?我的猜测是它将涉及将所有项目存储到一个多维数组中,然后以某种方式循环遍历它...
mysql ×7
php ×5
sql ×3
algorithm ×1
arrays ×1
draggable ×1
drupal ×1
exec ×1
hierarchy ×1
insert ×1
javascript ×1
jquery ×1
jquery-ui ×1
menu ×1
optimization ×1
performance ×1
rating ×1
select ×1
shell ×1
slider ×1
sql-order-by ×1
where-clause ×1