当前位置: 首页 > 面试题库 >

SQL从查询中的数据中选择数据库中尚未存在的数据?

常朗
2023-03-14
问题内容

我想在进行Web服务调用之前检查数据库中是否已记录的记录。

这是我想像的查询形式,我似乎无法弄清楚语法。

SELECT * 
  FROM (1,2,3,4) as temp_table 
 WHERE temp_table.id 
LEFT JOIN table ON id IS NULL

有没有办法做到这一点?这样的查询叫什么?

我想将ID的列表传递给mysql,并希望它吐出数据库中尚未存在的ID?


问题答案:

为了确认我已正确理解,您想传递一个数字列表,并查看现有表中 存在哪些数字?有效:

SELECT Item
FROM IDList I
    LEFT JOIN TABLE T ON I.Item=T.ID
WHERE T.ID IS NULL

您似乎可以随时建立此查询,在这种情况下,可以通过将上面的代码更改为

SELECT Number
FROM (SELECT Number FROM Numbers WHERE Number IN (1,2,3,4)) I
    LEFT JOIN TABLE T ON I.Number=T.ID
WHERE T.ID IS NULL

尽管由于查询的构建方式,这相对容易受到SQL Injection攻击。如果可以将“
1、2、3、4”作为字符串传递,并将其拆分为多个部分以生成数字列表以更安全的方式加入,则更好-
有关如何执行此操作的示例,请参见http://www.sqlteam.com/article/parsing-csv-values-into-
multiple-rows


所有这些都假定您的数据库中有一个数字/理算表,但是它们通常足够有用,因此我强烈建议您这样做。



 类似资料:
  • 前面一个章节中我们讲了关于SQLiteOpenHelper的创建,但是我们需要在必要的时候有方法去保存我们的数据到数据库,或者从我们的数据库中查询数据。另外一个叫ForecastDb类就会做这件事。

  • SqliteOpenHelper只是一个工具,是SQL世界和OOP之间的一个通道。我们要新建几个类来请求已经保存在数据库中的数据,和保存新的数据。被定义的类会使用ForecastDbHelper和DataMapper来转换数据库中的数据到domain models。我仍旧使用默认值的方式来实现简单的依赖注入: class ForecastDb( val forecastDbHelper:

  • 但是首先,我们要去为数据库创建model类。你还记得我们之前所见的map委托的方式?我们要把这些属性直接映射到数据库中,反过来也一样。 我们先来看下CityForecast类: class CityForecast(val map: MutableMap<String, Any?>, val dailyForecast: List<DayFor

  • 问题内容: 我有以下查询: 它按预期工作并返回正确的计数。但是现在当我执行以下查询时,我得到了不正确的计数: 为什么第一个查询得到正确的计数而第二个查询却没有? 问题答案: 由于消除了重复的值,因此如果两个计数恰好相同,则将消除一个,并且只对一个求和。尝试改用。

  • 问题内容: 我有一个称为Data的数据库,它是数据库中每个实体的父级。它包含Id等通用属性。然后,我有了一个扩展Data的实体,这也是由于其子类的通用功能而引起的。我的数据库中的映射是正确的。 这是我的等级制度的一个例子 并且表已正确映射: 无论如何,是否在数据库中查询所有作为Employee实例的Employee子类(FullTimeEmployee,PartTimeEmployee),而不在查

  • 问题内容: 是否可以检索中特定行的特定列? 假设我要使用以下查询文本从名为的表中选择名称为:a,b的行: 如何修改此查询文本以仅选择第2、12、22、32、42列,而不是选择其所有1000列? 问题答案: 将通配符替换为要检索的列名。 但是请阅读有关SQL标准的文档。您在表中需要1.000列的可能性很小。