私は物事のテーブルを持っています。単純化された構造は次のとおりです。
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
、一意の 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
thing_status
プライマリまたはセカンダリ (または両方) のいずれかで 0 にすることができますが、プライマリとセカンダリの両方で = 1を持つペアのみを (ランダムに) 選択したいと考えています。
私が提供したサンプル データから、thing_id
5 と 6、または 9 と 10 のいずれかのペアのみを返す必要があります (ランダムに)
難しい部分: いくつかのものは、一次的なものだけを持つことができ、二次的なものはありません. クエリは引き続きそれらを返し、ペアになっているものと同等に扱う必要があります。
2 つのクエリを実行するのと、複雑な 1 つのクエリを実行するのとではどちらがよいでしょうか?