Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql获取另一个表中不存在的数据_Mysql - Fatal编程技术网

Mysql获取另一个表中不存在的数据

Mysql获取另一个表中不存在的数据,mysql,Mysql,我有四张mysql表 表1,t_来源: +--------+-------+ | cindex | cname | +--------+-------+ 表2,t_语言: +--------+-------+ | cindex | cname | +--------+-------+ 表3,r_src_类别: +-----------+-----------+-------+ | src_index | lan_index | clink | +-----------+-----------

我有四张mysql表

表1,t_来源:

+--------+-------+
| cindex | cname |
+--------+-------+
表2,t_语言:

+--------+-------+
| cindex | cname |
+--------+-------+
表3,r_src_类别:

+-----------+-----------+-------+
| src_index | lan_index | clink |
+-----------+-----------+-------+
表4,r_来源:

+-----------+-----------+-------+
| src_index | lan_index | clink |
+-----------+-----------+-------+
SELECT
  r_source.c_src_index,
  r_source.c_lan_index
FROM r_source
WHERE r_source.c_src_index = 535 AND r_source.c_lan_index = 11;
我想从表3-r_src_cat中检索clink、source和language索引或名称,它们在表4-r_source中不存在。为此,我使用以下查询:

SELECT
  r_src_cat.clink,
  t_source.cname,
  t_language.cname
FROM r_src_cat, r_source, t_source, t_language
WHERE r_src_cat.c_src_index != r_source.c_src_index
      AND r_src_cat.c_lan_index != r_source.c_lan_index
      AND t_source.cindex = r_src_cat.c_src_index
      AND t_language.cindex = r_src_cat.c_lan_index
ORDER BY r_src_cat.clink;
这给了我错误的结果。r_源中大约有12条记录丢失,但结果给了我无限多条记录多次显示同一条记录,并且该记录出现在表中

请纠正我的疑问

谢谢

编辑---

对外关系

表3,r_src_cat.src_index=>t_source.cindex 表3,r_src_cat.lan_index=>t_language.cindex

表4,r_source.src_index=>t_source.cindex 表4,r_source.lan_index=>t_language.cindex

编辑2----

根据不同的建议,我运行这个查询

SELECT
  r_src_cat.c_src_index,
  r_src_cat.c_lan_index
FROM r_src_cat
  LEFT JOIN r_source ON r_src_cat.c_src_index = r_source.c_src_index
WHERE r_source.c_src_index IS NULL;
结果

352 0
352 0
352 0
352 0
352 0
352 0
352 0
352 0
352 0
352 0
352 0
338 0
338 0
569 0
569 0
569 0
此结果是正确的,但不完整。例如,我在表3上运行以下查询:

SELECT
  r_src_cat.c_src_index,
  r_src_cat.c_lan_index
FROM r_src_cat
WHERE r_src_cat.c_src_index = 535 AND r_src_cat.c_lan_index = 11;
它显示了一个包含一行的结果集

现在,表4上的相同查询-r_来源:

+-----------+-----------+-------+
| src_index | lan_index | clink |
+-----------+-----------+-------+
SELECT
  r_source.c_src_index,
  r_source.c_lan_index
FROM r_source
WHERE r_source.c_src_index = 535 AND r_source.c_lan_index = 11;
它返回并清空返回集


因此,组合535,11出现在表3中,但不在表4中。但是,在上面提到的表3和表4上运行左连接查询时,不存在相同的组合。

据我所知,您的问题是,例如,表A(表3)和表B(表4)包含一些类似的数据,但您需要表B中不存在的数据

e、 g.A包含1,2,3,4,5 B包含1,2,3

所以你们希望结果是缺失的,即4,5

如果这是您的查询,请尝试此示例并根据您的要求进行修改:

SELECT A.col1, A.col2 FROM A LEFT JOIN B ON A.col1=B.col1 WHERE B.col1 IS NULL

希望这会有所帮助。

您能显示表的外键关系吗?使用左连接并获取包含空值的记录值。在询问…@Shadow之前,您确实可以使用问题标题中的表达式进行搜索,我已经试过了,但没有任何效果result@MaheshMadushanka你能帮我写问题吗?我在写我的Vivek,请看一下我在问题中的第二次编辑修改您的查询,为c_lan_索引添加相等检查,以便在
左后在r_src_cat.c_src_index=r_source.c_src_index
中添加
和r_src_cat.c_lan_index=r_source.c_lan_索引
后接
其中r_source.c_src_索引为空。所以试试这个