Некоторые ответы CSS 3 были даны. Совместимое с CSS 2 решение будет выглядеть следующим образом, при условии, что вы можете как-то идентифицировать таблицу (представьте, что у нее есть класс «foo»):
table.foo > tbody > tr > td:first-class + td, /* column 2 */
table.foo > tbody > tr > td:first-class + td + td + td /* column 4 */
{display: none;}
Обратите внимание, что здесь не выбираются элементы или заголовки в thead или tfoot. Вы можете скопировать два селектора, чтобы прочитать «th», но если вы можете доверять целостности вашей разметки, чтобы не иметь ничего, кроме th и td внутри tr и tr только в thead, tfoot или tbody (единственные допустимые возможности); Вы могли бы сделать что-то вроде этого:
table.foo > * > tr > :first-class + *, /* column 2 */
table.foo > * > tr > :first-class + * + * + * /* column 4 */
{display: none;}
Это нормально работает в браузерах, более новых, чем IE6, как правило, что почти всегда приемлемо.
Если поддержка IE6 является обязательной - и быть совершенно уверенным, что она есть, прежде чем потрудиться идти по этому пути - комбинация действительных CSS2 / 3 и Javascript в условном комментарии является самым простым решением использование Javascript для макета, когда работа не требуется).