我想用C#在SQLite中做

SELECT * FROM media WHERE mediaId= for each
  SELECT mediaId FROM fav WHERE userId=1 ORDER BY indx DESC LIMIT 0, 100


语法显然是不正确的。我不知道如何在另一个选择语句中使用参数。

最佳答案

您的无效语法的最直接翻译:

SELECT * FROM media WHERE mediaId IN
  (SELECT mediaId FROM fav WHERE userId=1)
ORDER BY indx DESC LIMIT 0, 100


更好的样式(也许更快,但是我没有测量:

SELECT media.* FROM media
JOIN fav USING (mediaId)
WHERE fav.userId=1
ORDER BY media.indx DESC LIMIT 0, 100


两者都是标准的SQL,顺便说一句,尤其是第二种形式在几乎任何关系数据库实现上都可以很好地工作。

关于c# - sqlite如何使用其他选择的结果进行选择?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/931291/

10-09 15:02