[英]Add a condition to MySQL JOIN query: WHERE a column equals to result of a query
[英]How create mysql query result according to where condition values?
我想要這種出局
ID Status
100 Viewed
103 Not Viewed
105 Viewed
這是我的sql:
select id, status from status_table where ID in (100, 101,102,103,104,105);
它將顯示上述結果,因為在狀態表中,其他ID沒有任何條目。 ID is foreign key of another table named as table_file table. It contains in another database. So I cannot join the table due to some performance issue.
所以我將文件ID作為逗號分隔值傳遞。 但是我想要這種結果如何在不使用任何循環的情況下創建它。
ID Status
100 Viewed
101 Not
102 Not
103 Viewed
104 Not
105 Viewed
可能嗎? 請幫我。
你有一張表存在這些ID嗎? 那么你可以加入嗎?
SELECT
source.ID,
status.value
FROM
source
LEFT JOIN
status
ON status.id = source.id
WHERE
source.ID in (100, 101,102,103,104,105);
如果沒有,則需要創建臨時表或內聯表(其中包含這些值)。 然后,您可以將該表加入您的數據。
編輯
內聯表的示例。 有幾種方法可以做到這一點,這只是一種方法。
SELECT
source.ID,
status.value
FROM
(
SELECT 100 AS id UNION ALL
SELECT 101 AS id UNION ALL
SELECT 102 AS id UNION ALL
SELECT 103 AS id UNION ALL
SELECT 104 AS id UNION ALL
SELECT 105 AS id
)
AS source
LEFT JOIN
status
ON status.id = source.id
當ID
丟失時假設'不',你可以這樣做:
SELECT
so.ID,
CASE WHEN st.value IS NULL THEN 'Not' ELSE st.value END
FROM
databasename1..source so
LEFT JOIN
databasename2..status st
ON st.id = so.id
WHERE
so.ID in (100, 101,102,103,104,105)
將databasename1
和databasename2
替換為實際database names
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.