SQL-запрос с условием, когда одно поле не равно другому

Вопрос: Пусть говорят, что у нас есть поля: id | содержание | updateTime | CreationTime Когда вставка выполняется как updateTime, так и creationTime, заполняются текущим временем. При обновлении изменяется только поле updateTime. Когда мне нужно найти все данные, созданные в '2012-06-28', я просто использую: SELECT id, content FROM tbl WHERE creationTime LIKE '2012-06-28%'' Но чтобы

Вопрос:

Пусть говорят, что у нас есть поля: id | содержание | updateTime | CreationTime

Когда вставка выполняется как updateTime, так и creationTime, заполняются текущим временем. При обновлении изменяется только поле updateTime. Когда мне нужно найти все данные, созданные в ‘2012-06-28’, я просто использую:

SELECT id, content FROM tbl WHERE creationTime LIKE ‘2012-06-28%»

Но чтобы получить все данные, которые были обновлены за исключением созданных данных, мне нужно использовать что-то вроде этого:

SELECT id, content FROM tbl WHERE creationTime LIKE ‘2012-06-28%’ AND creationTime != updateTime

Очевидно, это не сработает. Хотя я мог бы найти все обновленные данные, сравнив значения двух “временных” столбцов внутри php, я все равно хотел бы сделать это внутри запроса.

UPD: Оказывается, я совершенно не подозревал, что sql позволяет не только сравнивать значение поля с заданной переменной, число…, но также может сравнивать значение одного поля с другим.

Ответ №1

Используйте <> вместо != (Что несовместимо с некоторыми DMBS)

Так

SELECT id, content FROM tbl WHERE creationTime LIKE ‘2012-06-28%’ AND creationTime <> updateTime

Если вы хотите найти документацию, которую вы можете найти здесь

Однако ваш запрос должен работать правильно с !=

Ответ №2

Ваш запрос правильный (на mySQL¹), не знаю, почему вы думаете иначе

¹ <> – оператор SQL для не равных. Однако некоторые его реализации (PostgreSQL или MySQL, например) принимают != Тоже. Рекомендуется использовать <> чтобы избежать проблем, если вы когда-либо использовали свой код в другой базе данных.

Ответ №3

Измените оператор not только от != До <>

SELECT id, content FROM tbl WHERE creationTime LIKE ‘2012-06-28%’ AND creationTime <> updateTime

Оцените статью
Добавить комментарий