![](/img/trans.png)
[英]How do i pull data from one table and insert it into a column in another table?
[英]How do I always pull data from one table, but also pull data from a second table if it's there in MySQL?
這是我的兩張桌子:
綠洲
+-----+-------+
| id | title |
+-------------+
| 234 | a |
| 235 | b |
| 236 | c |
+-----+-------+
user_collection
+----+---------+----------+------+
| id | oasisid | username | data |
+--------------+----------+------+
| 1 | 234 | joe | blah |
| 2 | 235 | bob | blah |
| 3 | 236 | ted | blah |
+----+---------+----------+------+
這是我的查詢:
SELECT *
FROM oasis
JOIN user_collection ON oasis.id = user_collection.oasisid
WHERE username = 'greg'
AND oasis.id = '234'
我想在這里做的是從綠洲和user_collection那場比賽拉的一切,而且還拉離綠洲的信息即使在user_collection不匹配。
我該如何解決查詢問題呢?
這就是手冊所說的,只是堅持使用MySQL ...“如果在ON或LEFT JOIN的USING部分中沒有正確的表匹配行,則將所有列設置為NULL的行用於正確的表您可以使用此事實在一個表中查找在另一個表中沒有對應項的行:
SELECT left_tbl.*
FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id
WHERE right_tbl.id IS NULL;"
http://dev.mysql.com/doc/refman/5.0/en/join.html
這也很清楚,為什么要將用戶名條件從where子句移動到ON子句,就像Andrew所說的...
您需要left join
,但是必須注意where
子句中的條件。 為了使left join
正常工作, 第二個表上的條件必須位於on
子句中:
SELECT *
FROM oasis JOIN
user_collection
ON oasis.id = user_collection.oasisid and user_collection.username = 'greg'
WHERE oasis.id = '234';
第一個表上的條件應放在where
子句中。
SELECT s.ome
, c.olumns
FROM table1 s
LEFT
JOIN table2 c
ON c.some_id = s.some_id
AND c.some_column = 'one thing'
WHERE s.some_other_column = 'another thing'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.