【问题标题】:SQL "AS" statement with "*" [duplicate]带有“*”的SQL“AS”语句[重复]
【发布时间】:2017-08-04 21:07:50
【问题描述】:

我正在尝试使用多个表格创建搜索表单。

我的问题在于“name AS name, *”部分,它不会使用名称作为名称并同时查找表中的所有内容。

这是我的 SQL 查询:

    SELECT name AS name, * FROM files_plus WHERE name LIKE '%$query%' 
    UNION ALL
    SELECT username AS name FROM users WHERE username LIKE '%$query%' 
    LIMIT 5

【问题讨论】:

  • 同样没有 sql 标准允许在选择表达式中的显式列之后使用*
  • 即使我输入了 cloumn 名称,它也不会起作用,因为我使用的是 AS 语句。
  • 尝试使用表名进行限定:files_plus.name, files_plus.*,因为该语法允许用于连接 (select t1.*, t2.col from t1 join t2)
  • * of 的使用会因平台而异。您没有指定您正在执行哪种类型的 SQL。
  • 我需要从第一个表中获取比另一个表更多的信息,但它不会让 med 从第一个表中选择任何其他内容...即使我删除“名称 AS 名称”并改用 *,不会工作。

标签: sql


【解决方案1】:

您需要先合并名称,然后执行 LEFT JOIN 以从 files_plus 获取其他列:

SELECT * FROM
(SELECT name AS name FROM files_plus WHERE name LIKE '%$query%' 
    UNION ALL
    SELECT username AS name FROM users WHERE username LIKE '%$query%' )
 AS names
LEFT JOIN files_plus ON names.name = files_plus.name

name 将有一个重复的列,但在原始查询中会有这样的列。

【讨论】:

  • 这有点工作,除了它不显示来自第二个表(用户)的名称。
  • 你的名字有重叠吗?如果是这样,您将需要一个额外的列来识别来源。
【解决方案2】:

“SELECT name AS name”与“SELECT name FROM....”相同。其次,“SELECT name...”是“SELECT * FROM...”的一部分。写一些类似“SELECT * FROM ...”的东西,你就可以轻松检索你的信息了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2012-08-25
    • 2011-06-09
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多