我是内部联接的新手,我似乎无法弄清楚这里出了什么问题。我希望返回表“事件”中的所有行。这是我的表格:
+----+---------+----------+ +----+---------+
| ID | name | venue_id | | ID | name |
+----+---------+----------+ +----+---------+
| 1 | Hub dub | 2 | | 2 | hub dub |
| 2 | Test 2 | 2 | +----+---------+
| 3 | Test 3 | 2 |
| 4 | Test 4 | 2 |
+----+---------+----------+
这里是查询:
SELECT DISTINCT a.*, b.name AS venue a
FROM events b
INNER JOIN venues ON a.venue_id = b.id
WHERE a.name LIKE '%hub%' OR b.name LIKE '%hub%'
出于某种原因,在我更复杂的版本中,只返回事件 ID#1。
最佳答案
语法有点偏离。别名 (a
) 需要在表之后(您在列别名之后有它)。
SELECT DISTINCT a.*, b.name AS venue
FROM events b
INNER JOIN venues a ON a.venue_id = b.id
WHERE a.name LIKE '%hub%' OR b.name LIKE '%hub%'
关于MySQL 内部连接查询没有返回正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14024013/