我有这样的 table
id | eventid | category | type
----+------------+------------+------
1 | 1 | music | event
2 | 2 | music | event
3 | 3 | music | event
4 | 4 | music | event
5 | 5 | music | page
6 | 6 | music | page
现在我需要获取 4 条记录的数据,其中 2 条来自带有状态事件的表,2 条来自带有状态页面的表
例子:
id | eventid | category | type
----+------------+------------+------
1 | 1 | music | event
2 | 2 | music | event
5 | 5 | music | page
6 | 6 | music | page
我试过下面的查询但是我得到了错误
SELECT *
FROM event_subcategory
WHERE category = 'music'
AND TYPE = 'event'
LIMIT 2
UNION
SELECT *
FROM event_subcategory
WHERE TYPE = 'page'
LIMIT 2
最佳答案
如果您想在 UNION
中使用 LIMIT
,最好在子查询周围使用括号,这样您就可以确保在没有它们的情况下限制正确的选择,第二个 LIMIT
适用于两个子选择。这更像我认为你想要的那样;
(SELECT * FROM event_subcategory WHERE category = 'music' AND TYPE = 'event' LIMIT 2)
UNION
(SELECT * FROM event_subcategory WHERE TYPE = 'page' LIMIT 2)
(作为旁注,您可能还想将 WHERE category = 'music'
添加到您的第二个子查询中,因为这两个部分是完全独立的)
关于具有与分页相关的多个状态变化的 Mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15264742/