sqlite如何选择使用其他选择的结果?

时间:2009-05-31 04:47:26

标签: c# sqlite

在SQLite中使用C#我想做

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

语法明显不正确。我不知道如何在另一个选择语句中使用param。

3 个答案:

答案 0 :(得分:5)

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

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,顺便说一下,特别是第二种形式对于任何关系数据库实现都会很好。

答案 1 :(得分:2)

你需要加入声明:

SELECT * FROM fav 
WHERE fav.userId=1
LEFT JOIN media 
ON media.mediaId=fav.mediaID
ORDER BY indx DESC LIMIT 0, 100

答案 2 :(得分:-1)

您需要SQL连接语句。这将是标准的T-SQL,而不是SQLite特有的。

你会做这样的事情:

SELECT m。* FROM media AS m JOIN fav as f on m.mediaId = f.mediaID 在哪里f.userId = 1

您可以在此基础上添加订购要求。