以下是来自SQL Server的查询:
SELECT * FROM ITEM WHERE item.name = hank
If @@ROWCOUNT < 20 THEN
UNION
SELECT * FROM ITEM WHERE item.name = jim
ENDIF
这在MySQL中是否可行?
答案 0 :(得分:2)
如果我理解正确,那么你不需要union
。一种选择是将order by
与limit
:
select *
from item
where name in ('hank','jim')
order by name
limit 20
这将从item
表中选择20行,从name = 'hank'
的那些行开始。您还可以考虑使用:
order by case when name = 'hank' then 0 else 1 end
limit 20
答案 1 :(得分:0)
我不确定此行为是否已记录/保证,但in the past我发现以下情况有效。
SELECT SQL_CALC_FOUND_ROWS *
FROM Item
WHERE Name ='Hank'
UNION ALL
SELECT *
FROM Item
WHERE FOUND_ROWS() < 20 AND Name = 'Jim';