WITH RECURSIVE nqueens_columns AS ( SELECT 8 as columns UNION SELECT columns - 1 AS columns FROM nqueens_columns WHERE columns > 1 ) SELECT CONCAT(CHAR(x1 + 64), y1) AS queen1, CONCAT(CHAR(x2 + 64), y2) AS queen2, CONCAT(CHAR(x3 + 64), y3) AS queen3, CONCAT(CHAR(x4 + 64), y4) AS queen4, CONCAT(CHAR(x5 + 64), y5) AS queen5, CONCAT(CHAR(x6 + 64), y6) AS queen6, CONCAT(CHAR(x7 + 64), y7) AS queen7, CONCAT(CHAR(x8 + 64), y8) AS queen8 FROM ( SELECT 1 AS x1, columns AS y1 FROM nqueens_columns ) as queen1 JOIN ( SELECT 2 AS x2, columns AS y2 FROM nqueens_columns ) AS queen2 ON NOT ( y1 = y2 OR x1 - y1 = x2 - y2 OR x1 + y1 = x2 + y2 ) JOIN ( SELECT 3 AS x3, columns AS y3 FROM nqueens_columns ) AS queen3 ON NOT ( y1 = y3 OR x1 - y1 = x3 - y3 OR x1 + y1 = x3 + y3 OR y2 = y3 OR x2 - y2 = x3 - y3 OR x2 + y2 = x3 + y3 ) JOIN ( SELECT 4 AS x4, columns AS y4 FROM nqueens_columns ) AS queen4 ON NOT ( y1 = y4 OR x1 - y1 = x4 - y4 OR x1 + y1 = x4 + y4 OR y2 = y4 OR x2 - y2 = x4 - y4 OR x2 + y2 = x4 + y4 OR y3 = y4 OR x3 - y3 = x4 - y4 OR x3 + y3 = x4 + y4 ) JOIN ( SELECT 5 AS x5, columns AS y5 FROM nqueens_columns ) AS queen5 ON NOT ( y1 = y5 OR x1 - y1 = x5 - y5 OR x1 + y1 = x5 + y5 OR y2 = y5 OR x2 - y2 = x5 - y5 OR x2 + y2 = x5 + y5 OR y3 = y5 OR x3 - y3 = x5 - y5 OR x3 + y3 = x5 + y5 OR y4 = y5 OR x4 - y4 = x5 - y5 OR x4 + y4 = x5 + y5 ) JOIN ( SELECT 6 AS x6, columns AS y6 FROM nqueens_columns ) AS queen6 ON NOT ( y1 = y6 OR x1 - y1 = x6 - y6 OR x1 + y1 = x6 + y6 OR y2 = y6 OR x2 - y2 = x6 - y6 OR x2 + y2 = x6 + y6 OR y3 = y6 OR x3 - y3 = x6 - y6 OR x3 + y3 = x6 + y6 OR y4 = y6 OR x4 - y4 = x6 - y6 OR x4 + y4 = x6 + y6 OR y5 = y6 OR x5 - y5 = x6 - y6 OR x5 + y5 = x6 + y6 ) JOIN ( SELECT 7 AS x7, columns AS y7 FROM nqueens_columns ) AS queen7 ON NOT ( y1 = y7 OR x1 - y1 = x7 - y7 OR x1 + y1 = x7 + y7 OR y2 = y7 OR x2 - y2 = x7 - y7 OR x2 + y2 = x7 + y7 OR y3 = y7 OR x3 - y3 = x7 - y7 OR x3 + y3 = x7 + y7 OR y4 = y7 OR x4 - y4 = x7 - y7 OR x4 + y4 = x7 + y7 OR y5 = y7 OR x5 - y5 = x7 - y7 OR x5 + y5 = x7 + y7 OR y6 = y7 OR x6 - y6 = x7 - y7 OR x6 + y6 = x7 + y7 ) JOIN ( SELECT 8 AS x8, columns AS y8 FROM nqueens_columns ) AS queen8 ON NOT ( y1 = y8 OR x1 - y1 = x8 - y8 OR x1 + y1 = x8 + y8 OR y2 = y8 OR x2 - y2 = x8 - y8 OR x2 + y2 = x8 + y8 OR y3 = y8 OR x3 - y3 = x8 - y8 OR x3 + y3 = x8 + y8 OR y4 = y8 OR x4 - y4 = x8 - y8 OR x4 + y4 = x8 + y8 OR y5 = y8 OR x5 - y5 = x8 - y8 OR x5 + y5 = x8 + y8 OR y6 = y8 OR x6 - y6 = x8 - y8 OR x6 + y6 = x8 + y8 OR y7 = y8 OR x7 - y7 = x8 - y8 OR x7 + y7 = x8 + y8 );