SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CALC_FOUND_ROWS]
select_expr [, select_expr] ...
[into_option]
[FROM table_references
[PARTITION partition_list]]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[into_option]
[FOR UPDATE | LOCK IN SHARE MODE]
into_option: {
INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name] ...
}
修饰符
STRAIGHT_JOIN:强制优化器按照表在FROM子句中列出的顺序连接表,如果优化器以非最佳顺序连接表,则可以使用它来加快查询速度。 STRAIGHT_JOIN也可以在 table_references列表中使用。STRAIGHT_JOIN不适用于优化程序视为const或system表的任何表。这样的表产生一行,在查询执行的优化阶段读取该表,并在执行查询之前将其列的引用替换为适当的列值。
SQL_BIG_RESULT\SQL_SMALL_RESULT:与GROUP BY或DISTINCT一起使用,告诉优化器结果集分别具有很多行或很小。对于SQL_BIG_RESULT, MySQL直接使用基于磁盘的临时表(如果创建了它们),并且更喜欢使用具有GROUP BY元素上的键的临时表进行排序。对于SQL_SMALL_RESULT, MySQL使用内存中的临时表来存储结果表,而不是使用排序。这通常是不需要的。
SQL_BUFFER_RESULT:强制将结果放入临时表中。这有助于MySQL及早释放表锁,并在将结果集发送到客户端花费很长时间的情况下提供帮助。此修饰符只能用于顶级SELECT语句,不能用于子查询或followingUNION。
SQL_CALC_FOUND_ROWS:告诉MySQL计算结果集中有多少行,而不管任何LIMIT子句。然后可以使用SELECT FOUND_ROWS()获取行数
HIGH_PRIORITY:赋予SELECT比更新表语句更高的优先级。您应该只在非常快且必须一次完成的查询中使用此方法。一个SELECT HIGH_PRIORITY查询,在表被锁定以便读取时发出,即使有一条update语句等待表空闲。这只会影响仅使用表级锁的存储引擎(如MyISAM、MEMORY和MERGE)。
FOR UPDATE:与使用页锁或行锁的存储引擎一起使用,则查询检查的行将被写锁,直到当前事务结束为止。
LOCK IN SHARE MODE:设置一个共享锁,该锁允许其他事务读取已检查的行,但不能更新或删除它们。
into outfile导出文件
导出文件123.xlsx,导出时需要注意secure-file-priv变量的值(show variables like '%secure%');
secure-file-priv的值是导出的目录(设置的目录必须已存在),为null时不允许导出,没有具体值时 表示不对的导入|导出做限制
SELECT
u.user_str,
u.addtime,
u.info,
question.title,
xuan.info INTO OUTFILE 'C:/Users/admin/Desktop/123.xls'
FROM
zt_n_survey_user_answer u
INNER JOIN zt_n_survey_question question ON u.qid = question.id
LEFT JOIN zt_n_survey_question_xuan xuan ON u.xid = xuan.id
WHERE
u.nsid = 23
AND u.state = 2
ORDER BY
u.user_str;