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

从带条件的表2中不存在的表1中选择*

屠盛
2023-03-14
问题内容

我有2张桌子。一个是一张桌子,上面有可以学习的东西。有一个JID描述了每种类型的行,并且对于每一行都是唯一的。第二张表是已经学习过的东西的日志(JID)以及学习它的人的用户ID。我目前正在使用它来选择JID的所有数据,但是只能选择用户根据userid学到的那些数据。

SELECT * 
FROM tablelist1
LEFT JOIN tablelog2 ON (tablelist1.JID = tablelog2.JID) 
                       AND tablelog2.UID = 'php var'
WHERE tablelog2.JID IS NOT NULL

现在,我需要选择要学习的东西行,但只选择用户ID尚未学习的东西。我显然对此很陌生,请忍受。:)我尝试使用IS
NULL,但是虽然看起来可以正常工作,但它给出了重复的JID,一个是NULL,一个是正确的。


问题答案:

使用LEFT JOIN / IS NULL:

   SELECT t.*
     FROM TABLE_LIST t
LEFT JOIN TABLE_LOG tl ON tl.jid = t.jid
    WHERE tl.jid IS NULL

使用NOT IN:

SELECT t.*
  FROM TABLE_LIST t
 WHERE t.jid NOT IN (SELECT tl.jid
                       FROM TABLE_LOG tl
                   GROUP BY tl.jid)

使用不存在:

SELECT t.*
  FROM TABLE_LIST t
 WHERE NOT EXISTS(SELECT NULL
                    FROM TABLE_LOG tl
                   WHERE tl.jid = t.jid)

FYI
LEFT JOIN / IS NULL和NOT IN在MySQL中是等效的-它们将执行相同的操作,而NOT
EXISTS则较慢/效率较低。有关更多详细信息:http :
//explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-
mysql/



 类似资料:
  • 问题内容: 我有一个关于ORACLE的问题,我写了一个PLSQL CODE来检查一个表是否存在,如果存在,那么我从该表中选择一些东西。 如果(表存在)从表中选择…。 问题是,即使表条件不存在且select语句从不执行,即使表不存在,我也总是会收到错误消息。 我认为这是因为在编译时检查了我的代码:“ select from ..”,如果表不存在,则会打印错误。我该如何解决这样的问题?..这是我的代码

  • 我有一个问题...在表1中,我有一个id,我必须比较表2中的id,然后获取表2中的第二个id,并将其与表3进行比较,得到一个数据作为结果。例子 如果我查找id 1,结果必须是Sea。如果我查找id 2,结果必须是Hello。 谢谢!

  • 首先对不起我的英语。我的isset有问题这是代码: PHP: 问题是,使用Post值在表1上搜索时可以,但在id为表1的表2上插入和在表2上添加时,id列上的值仅为0 Html: 这是html代码,我在一个氏族表中选择氏族的详细信息,当成员选择氏族名称并插入按钮时,发送的代码中选择了一个氏族名称,如isset值中的test CLANE,并在isset值中选择选项值CLANE name on tab

  • 我想从表1中选择不在表2中的数据,但我必须从表1中选择特定的数据 我的数据表 我想做什么 选择名称,id从表1其中id!=(从表2选择table1_id加入表3table2.acc_id=table3.acc_id其中table2.did=4759505和table2.acc_id=2)table1.acc_id=2 如果子查询返回一行,上面的查询工作正常,但如果子查询返回多行,则不正常 谢谢

  • 问题内容: 我有一个名为“工作”的表。对于特定用户,作业可以是活动的,已归档的,过期的,待处理的或已关闭的。现在,每个页面请求都生成5个COUNT查询,为了进行优化,我试图将其减少为单个查询。到目前为止,这是我所拥有的,但这仅比5个单独的查询要快。请注意,我已经简化了每个子查询的条件,以使其更易于理解,但是完整查询的行为相同。 有没有一种方法可以在不使用无效子查询的情况下在同一查询中获得这5个计数

  • 尝试运行一些SQL而没有运气,尝试从两个条件为true的表中选择数据。 这些表是驱动程序的详细信息和位置。这两个表都有列user_id,我想根据between部分中匹配的user_id从这两个表中获取数据。(select语句工作并返回ID); 我得到的错误:致命错误:调用一个成员函数bind_param()在一个非对象在C:\xampp\htdocs\矢量\www\脚本\getDriversInR