sqlite中有没有一种优雅的方法来选择自联接中的单个列?
这是一个不起作用的示例查询,因为我只能选择“mindate.rID”或“maxdate.rID”,或者它给了我一个“amiguous column name-error”,即使其中一个可能是我需要的条目。我看到的唯一解决方法是使用“SELECT*”,但必须有一种更优雅的方法来解决它,不是吗?对于SQLite,如果两个列都由表的名称/别名限定,则可以选择它们:sqlite中有没有一种优雅的方法来选择自联接中的单个列?,sql,sqlite,Sql,Sqlite,这是一个不起作用的示例查询,因为我只能选择“mindate.rID”或“maxdate.rID”,或者它给了我一个“amiguous column name-error”,即使其中一个可能是我需要的条目。我看到的唯一解决方法是使用“SELECT*”,但必须有一种更优雅的方法来解决它,不是吗?对于SQLite,如果两个列都由表的名称/别名限定,则可以选择它们: SELECT mindate.rID FROM (SELECT rID, mID, count(mID), min(ratingD
SELECT mindate.rID
FROM
(SELECT rID, mID, count(mID), min(ratingDate), stars
FROM rating
GROUP BY rID, mID
HAVING count(mID) >1)
AS mindate,
(SELECT rID, mID, count(mID), max(ratingDate), stars
FROM rating
GROUP BY rID, mID
HAVING count(mID) >1)
AS maxdate
WHERE mindate.stars > maxdate.stars
如果您遇到这样的问题,我怀疑它与SQLite无关,而是与您运行此查询所使用的工具或编程语言有关。在任何情况下,最好不要在结果中使用相同名称的两列,因此您应该为它们别名:
SELECT mindate.rID, maxdate.rID
见a.如果希望根据某些条件仅返回两列中的一列,请使用CASE表达式:
SELECT mindate.rID minID, maxdate.rID maxID
选择CASE WHEN,然后选择mindate.rID ELSE maxdate.rID END
请提供样本数据和所需结果。您的查询格式不正确,因为groupby
键与SELECT
列不匹配。可能有一种更简单的方法来做你想做的事情。@GordonLinoff sqlite允许这样做-看看你的查询应该做什么?请详细说明。表的唯一键是什么?
SELECT CASE WHEN <condition> THEN mindate.rID ELSE maxdate.rID END