我正在尝试将变量合并到查询中,以便更容易管理。我遵循this answer中列出的准则,并尝试实施它们。
我正在使用SQLite,所以我坚持其局限性,但看起来有些人已经有了一些工作方法。以下查询成功运行,但不返回任何记录。如果我将WHERE子句中的变量名分别替换为'John'和'Smith',则查询返回1条记录,但如果我使用我创建的变量名,则返回0条记录。删除变量周围的引号并不能使它工作。
CREATE TEMP TABLE IF NOT EXISTS _Variables (Name TEXT PRIMARY KEY, Value TEXT);
INSERT OR REPLACE INTO _Variables VALUES ('VarFirstName', 'John');
INSERT OR REPLACE INTO _Variables VALUES ('VarLastName', 'Smith');
SELECT LastName,FirstName,BirthYear,(strftime('%Y', date('now')) - BirthYear) AS Age,LocalExp,TotalExp,TotSalary,TotFringe,WorkLocationName,SchoolName
FROM DPISTAFF2008_2009
WHERE DPISTAFF2008_2009.FirstName = 'VarFirstName' AND DPISTAFF2008_2009.LastName = 'VarLastName'
;DROP TABLE _Variables;
我假设我的WHERE子句没有正确引用我创建的变量。打电话给他们的正确方法是什么?做上面所说的答案并不适合我。
评论;DROP TABLE _Variables;
并不会改变结果。
答案 0 :(得分:1)
您应该可以从您设置的表格中选择变量:
SELECT
LastName,
FirstName,
BirthYear,
(strftime('%Y', date('now')) - BirthYear) AS Age,
LocalExp,TotalExp,TotSalary,TotFringe,WorkLocationName,SchoolName
FROM DPISTAFF2008_2009
WHERE
DPISTAFF2008_2009.FirstName =
(SELECT Value FROM _Variables WHERE Name = 'VarFirstName') AND
DPISTAFF2008_2009.LastName =
(SELECT Value FROM _Variables WHERE Name = 'VarLastName');