我有一张桌子。这是一个简化的结构:
CREATE TABLE `things` (
`thing_id` int(11) NOT NULL AUTO_INCREMENT,
`thing_group` int(11) NOT NULL,
`thing_status` int(1) NOT NULL DEFAULT '0'
);
有2种东西。主要的,它将具有thing_id = thing_group
和次要的,它将具有一个 unqiue thing_id 但与主要项目相同的thing_group。
INSERT INTO `things` (`thing_id`, `thing_group`, `thing_status`) VALUES
(1, 1, 0),
(2, 1, 1),
(3, 3, 1),
(4, 3, 0),
(5, 5, 1),
(6, 5, 1),
(7, 7, 0),
(8, 7, 0),
(9, 9, 1),
(10, 9, 1),
我有成千上万的这样的对。
thing_status
对于主要或次要(或两者)可以为 0,但我只想(随机)选择一对(随机)thing_status
对于主要和次要事物都有 = 1。
所以从我提供的样本数据来看,它应该只返回thing_id
5 和 6 或 9 和 10 对(随机)
困难的部分:有些东西可以只有主要的东西,没有次要的东西。查询仍应返回这些并将它们平等地对待成对出现的事物。
我最好做 2 个查询还是一个复杂的单个查询?