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 by
与 limit
:
一起使用
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
- Condensed Fiddle Demo(改下限看)
我不确定这种行为是否 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';
以下是来自 SQL 服务器的查询:
SELECT * FROM ITEM WHERE item.name = hank
If @@ROWCOUNT < 20 THEN
UNION
SELECT * FROM ITEM WHERE item.name = jim
ENDIF
这在 MySQL 中可行吗?
如果我没理解错的话,你不需要 union
。一种选择是将 order by
与 limit
:
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
- Condensed Fiddle Demo(改下限看)
我不确定这种行为是否 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';