1

Тема: Как сделать SELECT * кроме _pole_1 _pole_2_

Задался вопросом, как выбрать все кроме нескольких полей.
Есть такая возможность?

Подскажите если кто делал уже.

Добавлено: 14-06-2011 22:58:00

Как сделать SELECT * кроме _pole_1 _pole_2_

2

Re: Как сделать SELECT * кроме _pole_1 _pole_2_

никогда не используйте звёздочку smile
Всегда перечисляйте все поля, которые хотите вытащить.

Re: Как сделать SELECT * кроме _pole_1 _pole_2_

Это почему ?

4

Re: Как сделать SELECT * кроме _pole_1 _pole_2_

а если хочется все поля, кроме одного?

Re: Как сделать SELECT * кроме _pole_1 _pole_2_

Выборка всех строк кроме первой и пятой (id - имя столбца с первичным ключем):
select * from `имя таблицы` where id <> 1 or id <> 5;

6

Re: Как сделать SELECT * кроме _pole_1 _pole_2_

Paymer-Soft-COM пишет:

Выборка всех строк кроме первой и пятой (id - имя столбца с первичным ключем):
select * from `имя таблицы` where id <> 1 or id <> 5;

Многоуважаемый, внимательно читайте вопрос.

Александр, ты уверен что тебе не подходит перебор тех столбцов которые нужны? Если не брать способ с созданием функции, вида (view) или временной таблицы то вот:

таблица

CREATE TABLE `accounts` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `type` varchar(32) character set ascii NOT NULL default 'plain',
  `password` text character set ascii collate ascii_bin,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1

там пароли

mysql> select * from accounts where id >= 10 limit 3;
+----+-------+--------------+
| id | type  | password     |
+----+-------+--------------+
| 10 | plain | kjhKJHkjhKJH | 
| 11 | plain | 4GtyVp7f     | 
| 12 | plain | 4GtyVp7f     | 
+----+-------+--------------+
3 rows in set (0.00 sec)

вытаскиваем все кроме столбца "type"

mysql> SET @SQL = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'accounts' AND COLUMN_NAME NOT IN ('type')), ' FROM accounts where id >= 10 limit 3');
Query OK, 0 rows affected (0.04 sec)
mysql> PREPARE tmpact1 FROM @SQL;
Query OK, 0 rows affected (0.02 sec)
Statement prepared
mysql> EXECUTE tmpact1;
+----+--------------+
| id | password     |
+----+--------------+
| 10 | kjhKJHkjhKJH | 
| 11 | 4GtyVp7f     | 
| 12 | 4GtyVp7f     | 
+----+--------------+
3 rows in set (0.00 sec)

но я не думаю что это то что тебе подойдет wink

7

Re: Как сделать SELECT * кроме _pole_1 _pole_2_

Да , спасибо всем. Тема ясна. Спасибо!