[英]mysql join for two columns of one table
您好,我有一個表格tbl_relations
,看起來像
-----------------------------------
| id | source_id | target_id |
-----------------------------------
| 2 | 2 | 4 |
-----------------------------------
| 3 | 5 | 7 |
-----------------------------------
| 4 | 7 | 4 |
-----------------------------------
和其他表tbl_looksup
看起來像
------------------------------
| 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_relations
映射到tbl_looksup
的方式是tbl_relations.source_id
和tbl_relations.target_id
是tbl_relations.target_id
的id of tbl_looksup
我的問題,我需要找出那些記錄tbl_relations
whoes source_id
或target_id
不存在tbl_looksup
。 這意味着沒有id
中存在tbl_looksup
。 更詳細地,tbl_relations的第一條記錄的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
要進一步獲得有關聯接的知識,請訪問以下鏈接:
OUTPUT
╔════╦═══════════╦═══════════╗
║ ID ║ SOURCE_ID ║ TARGET_ID ║
╠════╬═══════════╬═══════════╣
║ 2 ║ 2 ║ 4 ║
║ 4 ║ 7 ║ 4 ║
╚════╩═══════════╩═══════════╝
SELECT
tbl_relations.source_id,
tbl_relations.target_id,
tbl_relations.id
FROM
tbl_relations
WHERE tbl_relations.source_id not in (select id from tbl_looksup)
OR tbl_relations.target_id not in (select id from tbl_looksup)
嘗試添加以下內容:
在tbl_relations。
target_id
是NULL
SELECT tbl_relations.id FROM tbl_relations
LEFT JOIN tbl_looksup
ON tbl_looksup.id = tbl_relations.source_id OR tbl_looksup.id = tbl_relations.target_id
WHERE tbl_looksup.id IS NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.