Ale*_*x K 111 mysql select concat where conditional-statements
我想在脑海里编译这个...我有一个带有firstname和lastname字段的表,我有一个像"Bob Jones"或"Bob Michael Jones"这样的字符串和其他几个字符串.
问题是,我在名字中有Bob,在姓氏中有Michael Jones
所以我想
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
WHERE firstlast = "Bob Michael Jones"
Run Code Online (Sandbox Code Playgroud)
但它说未知的专栏"firstlast"..任何人都可以帮忙吗?
mdm*_*dma 174
您提供的别名用于查询的输出 - 它们在查询本身中不可用.
您可以重复表达式:
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
Run Code Online (Sandbox Code Playgroud)
或者包装查询
SELECT * FROM (
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users) base
WHERE firstLast = "Bob Michael Jones"
Run Code Online (Sandbox Code Playgroud)
Cha*_*ndu 34
试试这个:
SELECT *
FROM (
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
) a
WHERE firstlast = "Bob Michael Jones"
Run Code Online (Sandbox Code Playgroud)
Jef*_*sen 10
SELECT needefield, CONCAT(firstname, ' ',lastname) as firstlast
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
Run Code Online (Sandbox Code Playgroud)
使用CONCAT_WS().
SELECT CONCAT_WS(' ',firstname,lastname) as firstlast FROM users
WHERE firstlast = "Bob Michael Jones";
Run Code Online (Sandbox Code Playgroud)
第一个参数是其余参数的分隔符.
尝试:
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
Run Code Online (Sandbox Code Playgroud)
除非您将查询作为子选择执行,否则您的别名firstlast在查询的where子句中不可用.
可以使用重复CONCAT表达式或使用子查询的替代方法.您可以使用HAVING识别列别名的子句.
SELECT
neededfield, CONCAT(firstname, ' ', lastname) AS firstlast
FROM
users
HAVING firstlast = "Bob Michael Jones"
Run Code Online (Sandbox Code Playgroud)
这是一个有效的SQL小提琴.