将两个略有不同的查询合二为一 - 使用条件变量?

时间:2009-07-02 16:15:40

标签: mysql

只使用一个选择,而不是执行2个稍微不同的sql语句来获得总共10个结果?

e.g

选择 一个 ,b , C 来自mytable limit 3

选择 一个 ,b ,左(100,c) 来自mytable limit 3,10

2 个答案:

答案 0 :(得分:2)

查看UNION语法

(SELECT a,b,c FROM mytable LIMIT 3)
UNION
(SELECT a,b,LEFT(100, c) FROM mytable LIMIT 3, 10);

注意括号 - 这些确保最终的LIMIT子句适用于第二个查询,而不是整个结果集。

除非你的结果中有一个数字键,你可以用IF来格式化前n个结果,我认为你不会用一个选择来做这个。

答案 1 :(得分:0)

您可以选择所有十行,然后使用case语句来控制返回的值,具体取决于您定义的条件语句。
设为@ line_total = 0;

选择
一,
B,
@line_total:= @ line_total + 1,
(@line_total< 4时的情况 然后c
否则离开(100,c)结束)
来自test_query limit 10;


http://dev.mysql.com/doc/refman/5.0/en/case-statement.html