在SQLite中使用C#我想做
SELECT * FROM media WHERE mediaId= for each
SELECT mediaId FROM fav WHERE userId=1 ORDER BY indx DESC LIMIT 0, 100
语法明显不正确。我不知道如何在另一个选择语句中使用param。
答案 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
您可以在此基础上添加订购要求。