MYSQL if @@ROWCOUNT UNION SELECT 另一个查询

MYSQL if @@ROWCOUNT UNION SELECT ANOTHER QUERY

以下是来自 SQL 服务器的查询:

SELECT * FROM ITEM WHERE item.name = hank
If @@ROWCOUNT < 20 THEN
UNION
SELECT * FROM ITEM WHERE item.name = jim
ENDIF

这在 MySQL 中可行吗?

如果我没理解错的话,你不需要 union。一种选择是将 order bylimit:

一起使用
select * 
from item
where name in ('hank','jim')
order by name
limit 20

这将从 item table 中 select 20 行,从 name = 'hank' 所在的那些行开始。您也可以考虑使用:

order by case when name = 'hank' then 0 else 1 end 
limit 20

我不确定这种行为是否 documented/guaranteed 但 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';