如果外表ID出现在表A或表B中,我想得到结果行。
我有3个表:events
,pdf_results
和live_Results
。我想选择pdf_results
或live_Results
。
我已经尝试过以下查询,但是当两个表中都有结果时它无效。
SELECT
events.*,
live_results.id,
pdf_results.id
FROM events
LEFT JOIN pdf_results
ON pdf_results.eventId = events.id
LEFT JOIN live_Results
ON live_Results.eventId = events.id;
答案 0 :(得分:0)
如何使用exists
?
SELECT e.*
FROM events e
WHERE EXISTS (SELECT 1 FROM pdf_results pr WHERE pr.eventId = e.id) OR
EXISTS (SELECT 1 FROM live_Results lr WHERE lr.eventId = e.id);
答案 1 :(得分:0)
您可以加入UNION
查询:
SELECT e.*, r.result_type
FROM events AS e
JOIN (SELECT eventId, 'pdf' AS result_type FROM pdf_results
UNION ALL
SELECT eventId, 'live' AS result_type FROM live_results) AS r
ON e.id = r.eventId
添加result_type
列可以让我们知道它匹配哪个结果表,如果两个匹配,我们会得到两行。
您也可以使用原始查询,然后添加:
WHERE pdf_results.eventId IS NOT NULL OR live_results.eventId IS NOT NULL
当匹配两次时,您不会获得两行,但是您可以从两个eventId
列中找出找到的结果表。