Ich versuche eine Abfrage zu schreiben, bei der alle Datensätze aus einer Tabelle ausgewählt werden, in der bestimmte komplexe/verschachtelte Kriterien erfüllt sind. Die Logik in meiner Abfrage ist meiner Meinung nach korrekt, aber das Problem, auf das ich gestoßen bin, ist die letzte Unterabfrage (siehe Beispiel), die mehr als 1 Zeile zurückgibt, was ich erwarte/brauche. Das Problem ist also, wie gehe ich damit um? Unterstützt MySQL eine Art Looping oder ein gesetztes Kriterium?MySQL Wie mit Fehler umzugehen: Unterabfrage gibt mehr als 1 Zeile zurück?
SELECT c.primary_key
FROM esjp_content c
WHERE template_id = (
SELECT DISTINCT esjp_content.template_id
FROM esjp_content
INNER JOIN esjp_hw_config ON esjp_content.template_id = esjp_hw_config.proc_id
INNER JOIN esjp_assets ON esjp_hw_config.primary_key = esjp_assets.hw_config_id
WHERE
esjp_content.summary_id > 0
AND
(esjp_assets.asset_label='C001498500' OR esjp_assets.asset_label='H0065' OR esjp_assets.asset_label='L0009')
)
AND
EXISTS (SELECT 1 FROM esjp_content c2 WHERE c2.summary_id = c.primary_key)
AND
c.primary_key != (
/* This subquery returns more than 1 result. */
SELECT esjp_signoffs.content_id
FROM esjp_signoffs
INNER JOIN esjp_assets ON esjp_signoffs.asset_id = esjp_assets.primary_key
WHERE
esjp_signoffs.user_id=1
AND
(esjp_assets.asset_label='C001498500' OR esjp_assets.asset_label='H0065' OR esjp_assets.asset_label='L0009')
);
Weitere Einzelheiten über die Tabellen finden Sie in diesem other StackOverflow post ich heute früher gemacht. (Dies ist eine ganz andere Frage.)
Danke! Das 'NOT IN' hat es geschafft! –
@ JimFell danke .. – scaisEdge