搜索条件mysql IF(name = name,LIMIT 1,LIMIT 5)

时间:2012-11-30 05:22:43

标签: mysql

帮助创建搜索条件

SELECT *
FROM mlt_adr_city
WHERE name LIKE "Text%" 
AND region_id = 59
AND id <> 0 
IF (name = name, LIMIT 1, LIMIT 5)

值字段名称可以巧合。
如果值是相同的输出一行,或五。
抱歉,我的英文不好

[从评论中复制]:

如果请求没有条件,则重复记录的名称。例如WHERE名称LIKE“City1”具有相同的名称将返回五行,但id将是不同的。

但如果没有匹配则显示五条记录。

示例搜索LIKE "City1%"显示三个City1,City1,City1。

示例2.搜索LIKE "City2%"显示三个City2,City2,City2_en,City2_rect,City2_les的记录。

2 个答案:

答案 0 :(得分:0)

不,你的问题中不可能有条件限制声明。

如果您正在使用存储过程,则可以将参数或局部变量作为限制值,如下所述:

How to make limit offset dynamic using only (My)SQL

如果你不想使用存储过程,这里有一些sql如果有一个确切的名字匹配将返回一行,如果有一个部分名称匹配则返回5行:

SELECT * FROM mlt_adr_city
    WHERE
    name = 'Text'
    AND region_id = 59
    AND id <> 0
    LIMIT 1
UNION
SELECT * FROM mlt_adr_city
    WHERE
    name like 'Text%'
    AND region_id = 59
    AND id <> 0
    AND NOT EXISTS (SELECT 1 FROM mlt_adr_city WHERE name = 'Text' AND region_id = 59 AND id <> 0)
    LIMIT 5;

答案 1 :(得分:0)

示例

SELECT * FROM mlt_adr_city WHERE name LIKE "Text%"  AND region_id = 59 AND id <> 0 GROUP BY name LIMIT 5