Рассмотрят таблицу, как это:Получить строки из таблицы игнорирования результатов подвыборки
CREATE TABLE IF NOT EXISTS `books` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`original_id` int(8) unsigned DEFAULT NULL,
`user_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `original_id` (`original_id`)
);
INSERT INTO `books` (`id`, `title`, `original_id`, `user_id`) VALUES
(14, 'A Title', NULL, 0),
(26, 'Another title', NULL, 0),
(27, 'A Third Title', NULL, 0),
(29, 'A Title', 14, 4),
(30, 'A Forth Title', NULL, 0),
(31, 'A Fifth Title', NULL, 0),
(32, 'A Third Title', 27, 4),
(33, 'A Sixth Title', NULL, 0),
(34, 'A Forth Title', 30, 6);
SQLFiddle: http://sqlfiddle.com/#!2/3857e/1
user_id = 0 являются публичными записями
user_id> 0 являются частными записи возникли из публичная запись, где original_id ссылается на оригинальную запись
Мне нужно получить строки, где текстовый поиск выполняется, за исключением третьей части y записей (без проблем до сих пор) и исходных строк, где были сделаны мои копии.
Можно ли получить его, используя только select + subselect?
Каковы ваши желаемые результаты с вашими данными образца? Не уверен, что я полностью понимаю ваш вопрос. – sgeddes
Привет sgeddes, мне нужно сделать поиск, исключая сторонний (user_id! = Me AND user_id> 0) и исключая оригиналы, скопированные мной. –
Я тоже этого не понимаю. Как сказал sgeddes: «Какие строки результата вы ожидаете? user_id = 0 означает public. user_id> 0 означает private. Какой идентификатор пользователя означает «я»? Какой user_id означает «сторонняя сторона»? Вы ищете запрос с одним user_id? Если да, то какие результаты вы ожидаете для user_id 4, а для user_id 6 и для user_id 3? –