簡體   English   中英

mysql查詢(加入)並添加子查詢

[英]mysql query (join) and adding subqueries

我有這個查詢,它可以正確顯示結果。 我沒有使用join,但是它似乎仍然返回正確的值,那怎么可能?

SELECT connections.id,
       connections.word_id,
       connections.order_id,
       connections.top,
       connections.deleted,
       (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(connections.modified)) AS modified_ago,
       words_en.word,
       (CASE WHEN words_en.user_id = 1 THEN "You" ELSE words_en.user_id END) AS created_by
FROM connections, words_en
WHERE connections.word_id = words_en.id AND connections.user_id = 1
IN (SELECT COUNT(*) connections WHERE /* Result of previous select connections.word_id */ AND connections.user_id != 1)
ORDER BY connections.order_id 
  1. 是否足以做到這一點: connections.word_id = words_en.id加入?

  2. 我還想對此添加子查詢。 那是什么語法?

子查詢應該計算conenctions.word_id出現在連接表中的次數,其中connections.user_id != 1 ergo其他用戶使用了該單詞的次數。

  1. 我還需要另一個users.name_surname ,該words_en.user_id將使我獲得users.name_surname作為words_en.user_id

要聯接表,我們可以使用,(逗號)或join關鍵字。 如果我們使用,(逗號),它將根據我們的條件給出確切的結果。 如果我們使用join關鍵字,我們可以使用多種連接類型,例如left join right join,以及更多其他類型。 這些所有聯接將給出不同的結果。

可以說,(逗號)聯接與JOIN相同,但與LEFT JOIN不同。

下面是編寫子查詢的示例

SELECT connections.id,
       connections.word_id,
       connections.order_id,
       connections.top,
       connections.deleted,
       (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(connections.modified)) AS modified_ago,
       words_en.word,
       words_en.user_id 
FROM connections, words_en
WHERE connections.word_id = words_en.id AND connections.user_id IN (select id from connections)
ORDER BY connections.order_id

select id from connections是子查詢

對於您的第三點,請嘗試以下

SELECT users.name_surname 
FROM users, words_en
WHERE users.user_id = words_en.user_id
ORDER BY users.user_id

進行加入操作:

SELECT connections.id,
   connections.word_id,
   connections.order_id,
   connections.top,
   connections.deleted,
   (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(connections.modified)) AS modified_ago,
   words_en.word,
   words_en.user_id 
FROM connections
LEFT JOIN  words_en ON connections.word_id = words_en.id AND connections.user_id = 1
WHERE 
     words_en.id IS NOT NULL
ORDER BY connections.order_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM