我已經寫了下面的SQL語句,並得到結果,當我加入其中name =聲明不承認「名稱」凡從CONCAT /工會的腳本語句
SELECT CONCAT(`Surname` , ' ', `firstname`) AS NAME
FROM Prospects
UNION
SELECT CONCAT(`last_name` , ' ', `first_name`) AS NAME
FROM customer
ORDER BY name;
我已經寫了下面的SQL語句,並得到結果,當我加入其中name =聲明不承認「名稱」凡從CONCAT /工會的腳本語句
SELECT CONCAT(`Surname` , ' ', `firstname`) AS NAME
FROM Prospects
UNION
SELECT CONCAT(`last_name` , ' ', `first_name`) AS NAME
FROM customer
ORDER BY name;
SELECT
CONCAT(Surname , ' ', firstname) AS NAME FROM Prospects
UNION
SELECT
CONCAT(last_name , ' ', first_name) AS NAME FROM customer
WHERE
CONCAT(Surname , ' ', firstname) = <statement> or
CONCAT(last_name, ' ', firstname) = <statement>
ORDER BY name;
一對夫婦的選項。
爲每個SELECT添加WHERE子句。在同一查詢的WHERE子句中,不可能通過分配的別名在SELECT列表中引用表達式的結果。要指定在WHERE子句中的謂語,你需要重複表達:
SELECT CONCAT(p.surname,' ',p.firstname) AS NAME
FROM Prospects p
WHERE CONCAT(p.surname,' ',p.firstname) = ?
UNION
SELECT CONCAT(c.last_name,' ',c.first_name)
FROM customer c
WHERE CONCAT(c.last_name,' ',c.first_name) = ?
ORDER BY 1
的MySQL擴展了SQL標準,並允許HAVING子句引用不是在GROUP BY
非集合表達式SELECT CONCAT(p.Surname,' ',p.firstname) AS NAME
FROM Prospects p
HAVING NAME = ?
UNION
SELECT CONCAT(c.last_name,' ',c.first_name) AS NAME
FROM customer c
HAVING NAME = ?
ORDER BY 1
要在WHERE子句中按名稱引用別名,可以使用內聯視圖。但請注意,可能會有顯着的性能損失,因爲謂詞是而不是被推入內聯視圖。這意味着MySQL會將視圖查詢中的所有行實現爲派生表,然後外部查詢將對派生表運行。不要這樣做,特別是對於大表格:
SELECT v.name
FROM (SELECT CONCAT(p.Surname,' ',p.firstname) AS NAME
FROM Prospects p
UNION
SELECT CONCAT(c.last_name,' ',c.first_name)
FROM customer c
) v
WHERE v.name = ?
ORDER BY 1