一个表中两列的mysql连接
您好,我有一个表一个表中两列的mysql连接,mysql,sql,select,join,Mysql,Sql,Select,Join,您好,我有一个表tbl\u relations,看起来像 ----------------------------------- | id | source_id | target_id | ----------------------------------- | 2 | 2 | 4 | ----------------------------------- | 3 | 5 | 7 |
tbl\u relations
,看起来像
-----------------------------------
| id | source_id | target_id |
-----------------------------------
| 2 | 2 | 4 |
-----------------------------------
| 3 | 5 | 7 |
-----------------------------------
| 4 | 7 | 4 |
-----------------------------------
------------------------------
| id | language | value |
------------------------------
| 1 | 1 | abc |
------------------------------
| 1 | 2 | abc |
------------------------------
| 2 | 1 | abc |
-------------------------------
| 2 | 2 | abc |
-------------------------------
| 5 | 1 | abc |
-------------------------------
| 5 | 2 | abc |
-------------------------------
| 7 | 1 | abc |
-------------------------------
| 7 | 1 | abc |
-------------------------------
和其他表tbl_looksup
,如下所示
-----------------------------------
| id | source_id | target_id |
-----------------------------------
| 2 | 2 | 4 |
-----------------------------------
| 3 | 5 | 7 |
-----------------------------------
| 4 | 7 | 4 |
-----------------------------------
------------------------------
| id | language | value |
------------------------------
| 1 | 1 | abc |
------------------------------
| 1 | 2 | abc |
------------------------------
| 2 | 1 | abc |
-------------------------------
| 2 | 2 | abc |
-------------------------------
| 5 | 1 | abc |
-------------------------------
| 5 | 2 | abc |
-------------------------------
| 7 | 1 | abc |
-------------------------------
| 7 | 1 | abc |
-------------------------------
tbl\u关系
映射到tbl\u looksup
的方式是tbl\u关系。源代码id
和tbl\u关系。目标代码id
是tbl\u looksup的id
我的问题
我需要找出tbl\u relations
中那些source\u id
或target\u id
在tbl\u looksup
中不存在的记录。这意味着tbl\u looksup
中不存在id
。更详细地说,tbl_关系的第一条记录具有target_id=4
,这在tbl_looksup
中不存在。这是错误的记录。我需要找出这些记录
我到目前为止所做的事情
SELECT
tbl_relations.source_id,
tbl_relations.target_id,
tbl_relations.id,
tbl_looksup.`id` AS tblid
FROM
tbl_relations
LEFT JOIN tbl_looksup
ON tbl_relations.`source_id` != tbl_looksup.`id`
OR tbl_relations.`target_id` != tbl_looksup.`id`
GROUP BY tbl_relations.id
为了得到您想要的结果,您需要加入tbl_looksup
两次,因为有两列依赖于该表
SELECT DISTINCT a.*
FROM tbl_relations a
LEFT JOIN tbl_looksup b
ON a.source_id = b.id
LEFT JOIN tbl_looksup c
ON a.target_id = c.id
WHERE b.id IS NULL OR
c.id IS NULL
要进一步了解加入的更多信息,请访问以下链接:
输出
╔════╦═══════════╦═══════════╗
║ ID ║ SOURCE_ID ║ TARGET_ID ║
╠════╬═══════════╬═══════════╣
║ 2 ║ 2 ║ 4 ║
║ 4 ║ 7 ║ 4 ║
╚════╩═══════════╩═══════════╝
尝试添加以下内容:
其中tbl_关系。target_id
为空
+1从你的速度来看,在回答任何问题的前五分钟内,你都应该被禁止D@hims056不<代码>O_O
请不要:D
hehe@JW. 这是杰出的。谢谢你,伙计