がテーブルtable1
名であり@input
、入力値が含まれているとします。
DECLARE @input INT = 2;
DECLARE @parent INT = 0;
DECLARE @name NVARCHAR(200); --same type with name column
SELECT @parent = parentid, @name = name FROM table1 WHERE id = @input;
IF @parent = 0
SELECT * FROM table1 WHERE id <> @input
ELSE
SELECT * FROM table1 WHERE name LIKE (@name + '%')
これは、名前フィールドが例のような形式の場合に実行できます。
再帰SQLについては、次のように参照してください。
WITH temptable (id, parentid, name) AS
(
SELECT id, parentid, name
FROM table1 t1
WHERE t1.id = 1
UNION ALL
SELECT t2.id, t2.parentid, t2.name
FROM table1 t2, temptable t3
WHERE t2.parentid = t3.id
)
SELECT id, parentid, name
FROM temptable
WHERE parentid <> 0