würde geschätzt zu ändern Ich habe dies:SQL-Skript wird nicht wie vorgesehen arbeiten, einige Unterstützung, dass
SELECT * FROM `npt_articles` WHERE (date_discovered >= 1464534366 AND
date_discovered <= 1464534366 AND
npt_site_id = 4 AND
(@total_social := (comments_html + fb_total + google_plus_one + pinterest + linked_in) + 0.0) >
865.0 AND
http_status_code = 200) ORDER BY @total_social DESC;
Es funktioniert, aber nicht annähernd so gedacht.
total_social
ist der Aggregatwert anderer benannter Felder derselben Zeile (Datensatz, Objekt usw.), die dann mit einer Zahl verglichen werden, die in die Abfragezeichenfolge eingegeben wird. Ich möchte dieses Aggregat auch in einer virtuellen Spalte verwenden, um dann die Ergebnisse zu ordnen.
habe ich versucht, dies aber ich bin mir nicht sicher, ob dies der Weg zu gehen:
SELECT *, @total_social := (comments_html + fb_total + google_plus_one + pinterest + linked_in) + 0.0 FROM `npt_articles`
WHERE (date_discovered >= 1464534366 AND
npt_site_id = 4 AND
@total_social >
865.0 AND
http_status_code = 200) ORDER BY @total_social DESC;
Ich denke, was ich will so etwas wie diese:
SELECT *, ((comments_html + fb_total + google_plus_one + pinterest + linked_in) + 0.0) as total_social FROM `npt_articles` WHERE (date_discovered >= 1464534366 AND
npt_site_id = 4 AND
total_social >
865.0 AND
http_status_code = 200) ORDER BY total_social DESC;
Das einzige Problem ist, dass MySQL Workbench sagt, dass total_social
nicht existiert.
Ich habe versucht, einen CTE wie folgt aus:
WITH inner_table AS (
SELECT
((comments_html + fb_total + google_plus_one + pinterest + linked_in) + 0.0) AS total_social
FROM
`npt_articles`
)
select * FROM inner_table
WHERE
(date_discovered >= 1464534366
AND npt_site_id = 4
AND total_social > 865.0
AND http_status_code = 200)
ORDER BY total_social DESC;
wie in „Referring to a Column Alias in a WHERE Clause“ aber MySQL Workbench wird es nicht akzeptieren, weil es nicht die WITH
an dieser Position nicht mag, was ich jetzt weiß, wird von MySQL nicht unterstützt.
Kein Zweifel, mit Beispieldaten und gewünschten Ergebnissen könnte jemand anderes herausfinden, was Sie eigentlich vorhaben. –
Sie brauchen dafür KEINE Variable: 'select ... WHERE ((comments_html + ... + linked_in)> 865))' –
wie würde ich dann an ORDER BY weiterleiten? plus Es existiert nicht außerhalb der Zeilenabfrage, weshalb ich es außerhalb der Abfrage mache. Ich denke, [virtuelle Spalten] (https://mariadb.com/kb/en/mariadb/virtual-computed-columns/) könnten das sein, wonach ich suche. – Thermatix