帮助创建搜索条件
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的记录。
答案 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