In my last post, we discussed the usefulness of WHERE 1=1 in SQL queries. This time, let’s explore the purpose behind using WHERE 1=2 – a statement that evaluates to false. Similar to WHERE 1=1, this technique can be applied across various SQL platforms, including MySQL, Postgres, RedShift, and SQL Server.
If you’re familiar with the advantages of WHERE 1=1, this article will shed light on when and why you might want to use its false counterpart.
The Purpose of WHERE 1=2
While WHERE 1=1 is commonly used for query building and commenting, WHERE 1=2 serves a different purpose. It is often employed when creating a table copy from another table but without copying any rows. This proves especially handy when you want to replicate the structure of a table without duplicating its data, keys, or constraints.
Example SQL and Explanation
Let’s dive into an example to illustrate the use of WHERE 1=2. The SQL syntax provided is compatible with various SQL systems, but be sure to adjust table names based on the platform you’re working with.
-- Create a sample table for demonstration
CREATE TABLE source_table (
id SERIAL PRIMARY KEY,
name VARCHAR(255),
value INT
);
INSERT INTO source_table (name, value)
VALUES
('Item A', 10),
('Item B', 20),
('Item C', 15);
-- Create a table copy from another table but without copying any rows
CREATE TABLE target_table AS
(SELECT * FROM source_table WHERE 1=2);
-- Verify the contents of the target_table (should have no rows)
SELECT * FROM target_table;

This example illustrates how WHERE 1=2 is useful when creating a table copy with the same structure but without replicating any rows. If running through this example yourself, remember to drop the source_table and target_table.