[英]Two Select query help needed
SELECT r.nid
FROM recipe_node_ingredient r,recipe_ingredient ri
WHERE r.`ingredient_id` = ri.id
AND ri.name = 'carrot'
AND r.nid NOT IN (SELECT r.nid
FROM recipe_node_ingredient r,recipe_ingredient ri
WHERE r.`ingredient_id` = ri.id AND ri.name = 'salt');
該查詢將返回節點ID。
並且此查詢還返回Node ID。
SELECT nid
FROM taxonomy_index JOIN taxonomy_term_data USING (tid)
WHERE name IN ('Desert."', 'Indian')
GROUP BY nid HAVING COUNT(*) > 1
是否有可能在MySQL查詢中檢查兩個返回節點ID是否相等?
MYSQL中沒有什么可以檢查查詢中是否相等的(從不同的查詢返回結果)
您的要求是業務邏輯。 因此,您將第一個查詢的返回值與第二個查詢的返回值進行比較,並在代碼中進行比較!
好吧,你可以嘗試這樣的事情:
SELECT *
FROM (SELECT r.nid
FROM recipe_node_ingredient r,
recipe_ingredient ri
WHERE r.`ingredient_id` = ri.id
AND ri.name = 'carrot'
AND r.nid NOT IN (SELECT r.nid
FROM recipe_node_ingredient r,
recipe_ingredient ri
WHERE r.`ingredient_id` = ri.id
AND ri.name = 'salt')) subSelect1,
(SELECT nid
FROM taxonomy_index
JOIN taxonomy_term_data USING (tid)
WHERE name IN ('Desert."','Indian')
GROUP BY nid
HAVING COUNT(*) > 1) subSelect2
WHERE subSelect1.nid = subSelect2.nid
如果您沒有從該查詢中得到結果,則說明這些字符不匹配。
如何使用FULL OUTER JOIN比較結果?
SELECT
nid,
IFNULL(from_recipe, 0) from_recipe,
IFNULL(from_taxonomy, 0) from_taxonomy
FROM
(
SELECT r.nid, 1 AS from_recipe
FROM recipe_node_ingredient r
WHERE EXISTS (
SELECT 1 FROM recipe_ingredient WHERE id = r.ingredient_id AND name = 'carrot'
)
AND NOT EXISTS (
SELECT 1 FROM recipe_ingredient WHERE id = r.ingredient_id AND name = 'salt'
)
) AS recipe
FULL OUTER JOIN (
SELECT ti.nid, 1 AS from_taxonomy
FROM taxonomy_index td
INNER JOIN taxonomy_term_data ti ON td.tid = it.tid
WHERE td.name IN ('Desert."', 'Indian')
GROUP BY ti.nid
HAVING COUNT(*) > 1
) AS taxonomy ON recipe.nid = taxonomy.nid
WHERE
IFNULL(from_recipe, 0) + IFNULL(from_taxonomy, 0) = 1
WHERE from_recipe + from_taxonomy = 1
將返回僅在一個查詢中的行。 使用= 2
查看另一半,或將其完全忽略以查看哪個。
select if(select r.nid from recipe_node_ingredient r,recipe_ingredient ri where
r.`ingredient_id` = ri.id and ri.name = 'carrot' and r.nid
NOT IN (select r.nid from recipe_node_ingredient r,recipe_ingredient ri
where r.`ingredient_id` = ri.id and ri.name = 'salt') == (SELECT nid FROM taxonomy_index JOIN taxonomy_term_data
USING (tid) WHERE name IN ('Desert."', 'Indian')
GROUP BY nid HAVING COUNT(*) > 1),'true','false')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.