Может казаться, не отменяет изменения в Мерзавце

Сначала вам нужно изменить текущую таблицу на временную таблицу:

alter table student_info rename to student_name

Затем вы захотите воссоздать student_info:

create table student_info add column (
    stuid VARCHAR(5) PRIMARY KEY,
    name VARCHAR(255),
    subjectid_3 INTEGER,
    subjectid_4 INTEGER,
    subjectid_5 INTEGER
)

Затем заполните student_info:

insert into student_info
select
    u.stuid,
    u.name,
    s3.marks as subjectid_3,
    s4.marks as subjectid_4,
    s5.marks as subjectid_5
from
    student_temp u
    left outer join markdetails s3 on
        u.stuid = s3.stuid
        and s3.subjectid = 3
    left outer join markdetails s4 on
        u.stuid = s4.stuid
        and s4.subjectid = 4
    left outer join markdetails s5 on
        u.stuid = s5.stuid
        and s5.subjectid = 5

Теперь просто отбросьте временную таблицу:

drop table student_temp

И вот как вы можете быстро обновить свою таблицу.

В SQLite отсутствует функция pivot, поэтому лучшее, что вы можете сделать, - это жестко кодировать некоторые левые соединения. left join принесет соответствие любым строкам в своих условиях соединения и вернет null для любых строк из первой или левой таблицы, которые не удовлетворяют условиям соединения для второй таблицы.

115
задан Eyal 11 April 2013 в 22:07
поделиться

2 ответа

Я думаю, вам нужно передать -f

со страницы руководства ( man git-checkout , GIT-CHECKOUT (1)):

-f, --force
Продолжить, даже если индекс или рабочее дерево отличается от HEAD.
Используется для отбрасывания локальных изменений .

Например, отменить изменения в текущей ветви и переключиться на другую ветвь:

git checkout -f master
15
ответ дан 24 November 2019 в 02:27
поделиться

Какие изменения git diff показывают в файле? В Windows я видел проблемы с окончанием строк, вызывающие подобные проблемы. В этом случае посмотрите, какие настройки у вас есть для git config core.autocrlf и git config core.safecrlf . Здесь документация по этим настройкам .

Я бы сказал, если вы используете git svn для интеграции с Subversion, убедитесь, что autocrlf выключен. Насколько я могу судить, в этой конфигурации он просто не работает, и это заставляет большинство инструментов думать, что файлы были изменены, когда вы выполнили проверку , чтобы отменить любые изменения.

Если вы видите ошибку проблема, связанная с git checkout , при чтении из файловой системы и конвертировать в обратном порядке при записи в файловая система. Переменная может быть установлена ​​на ввод, и в этом случае преобразование происходит только при чтении из файловая система, но файлы записываются с LF в конце строк. В настоящее время какие пути рассмотреть "текст" (т.е. подвергаться механизм autocrlf) решено чисто на основе содержимого.

core.safecrlf

Если true, заставляет git проверять, преобразовывает ли CRLF как контролируется core.autocrlf обратимый. Git будет проверить, изменяет ли команда файл в дерево работ либо напрямую, либо косвенно. Например, совершая файл, за которым следует проверка того же файл должен дать исходный файл в дерево работ. Если это не так для текущей настройки core.autocrlf, git отклонит файл. Переменная может быть установлена ​​на "предупреждать", и в этом случае git будет только предупредить о необратимом обращении но продолжаем операцию. ...

35
ответ дан 24 November 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: