'MySQL using WITH clause
I'm using MySQL to solve this problem on hackerrank.
Why this code doesn't work
WITH P_node AS (
SELECT DISTINCT P FROM BST)
SELECT CASE
WHEN P IS NULL THEN CONCAT(N, ' Root')
WHEN N IN P_node THEN CONCAT(N, ' Inner')
ELSE CONCAT(N, ' Leaf')
END
FROM BST
ORDER BY N;
But this code works? I'm confused, can somebody help me?
SELECT CASE
WHEN P IS NULL THEN CONCAT(N, ' Root')
WHEN N IN (SELECT DISTINCT P FROM BST) THEN CONCAT(N, ' Inner')
ELSE CONCAT(N, ' Leaf')
END
FROM BST
ORDER BY N ASC
Solution 1:[1]
Correct syntax is:
WITH P_node AS (
SELECT DISTINCT P FROM BST)
SELECT CASE
WHEN P IS NULL THEN CONCAT(N, ' Root')
WHEN N IN (select P from P_node) THEN CONCAT(N, ' Inner')
ELSE CONCAT(N, ' Leaf')
END
FROM BST
ORDER BY N;
Basically replace P_node with (select P from P_node) in WHEN N IN P_node THEN CONCAT(N, ' Inner')
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Zakaria |
