这里的初学者*。我有一个允许用户在其中运行查询的表。但是,在我的系统中,我允许用户在表上运行查询,然后使用相同的查询结果运行另一个查询。
SELECT * FROM employees WHERE jobTitle = 'Sales Rep'
SELECT * FROM employees WHERE officeCode = '1'
以前使用SQLite语法,我能够通过将这两个查询操作到
SELECT * FROM (SELECT * FROM employees WHERE jobTitle = 'Sales Rep') WHERE offi
在Ms Access中,我可以使用以下数据创建一个名为"CustomerList“的查询:
CustomerName, City, Revenue
然后我可以创建另一个查询,例如"CustomerCount“,比如:
Select count(*) as Tot
from CustomerList ( <<<- is a query name)
where CustomerList.City
此查询基于另一个查询。在MYSQL中也可以这样做吗?
谢谢
我无论如何都不是MySQL专家,但是在阅读了SELECT语句的文档之后,我没有找到我的问题的答案。
我有这样的声明:
SELECT COUNT(*)=x.c FROM someTable,
(SELECT COUNT(*) c
FROM someTable
WHERE firstId <= secondId) x;
我正在尝试弄清楚x.c在查询上下文中的含义?具体地说,似乎挂在那里的x是什么?
我将嵌套的SELECT解释为SELECT COUNT(*) as c,将行计数的别名解释为c,这也是x吗?它的别名是什么?
谢谢!
我有以下查询在工作
SELECT newTable.Score, COUNT(1) AS Total, COUNT(1) / t.count * 100 AS `Frequency`
FROM mytable newTable
CROSS JOIN (SELECT COUNT(1) AS count FROM mytable) t
GROUP BY newTable.Score
ORDER BY Frequency DESC
但是,有两件事我从MySQL文档中不理解:
1)我不明白为什么from子句中没有指定逗号或联接类型。
阅读MySQL文档,这似乎是必要的。
( 2)在交叉连接子句中,t
有关以下MySQL查询的内容已中断。我包括protected :受保护的函数scanAgainstUrlTargets(数组$urlData) {全局$wpdb;
$urlMatch = $wpdb->get_results("
SELECT *
FROM {$wpdb->prefix}delayedCoupons_targets t
WHERE t.targetUrl = {$urlData['rawUrl']}
AND t.displayThreshold < (
select count(*)
from {$wpd
我想了解MySQL中的某些特定行为。运行"select @@ version ",我看到我的版本是5.6.34-log。
让我使用生成的表来放置示例,以便更容易地再现:
SELECT
CONCAT(a, b) AS 'c1', CONCAT((SELECT c1), 2)
FROM
(SELECT 'a', 'b', 'c' UNION ALL SELECT 1, 2, 3) t1;
我最初搜索的是,正如标题所建议的,如何选择一个列的别名,以便重用计算过的字段,避免长时间的查询。大多数答案要么建议
我想写额外的查询到phpbb3 ,它检查一个用户在没有给其他三个人业力之前不能给同一个人业力。但我收到SQL语法中的错误..。
我检查了和链接和查询,如下所示
SELECT *
FROM phpbb_karma AS out
WHERE out.poster_id = 134
AND out.poster_id
NOT IN
(SELECT k.karma_id, k.user_id, k.poster_id
FROM phpbb_karma AS k
WHERE user_id = 108
ORDER BY k.karma_id DESC LIMIT 3)
所以我内心的疑问得到了他(p
我正在使用我认为在MySQL中称为“派生表”的内容,并且注意到只有在x语句之后有这个x时,我的查询才能正常工作:
SELECT * FROM( <inner select> ) x ORDER BY id ASC
// -----------------------------^
我环顾四周,阅读了几篇关于派生表的文章,但都没有提到这一点(我看到的所有示例都没有使用它,尽管我的测试返回0行没有它)。我在上偶然发现的。
如果有任何不同,我将通过PDO运行查询。
尝试使用"SELECT *“而不是"DELETE FROM”进行查询,它运行得很好。
DELETE FROM `80dage_garmin_track` t1 WHERE EXISTS (
SELECT 1
FROM `80dage_garmin_track` t2
WHERE t1.Length = t2.Length
AND t1.Time = t2.Time
AND t1.idgarmin_track > t2.idgarmin_track
)
MySQL Error: .#1064 -您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以获得
我试图将子查询添加到select中,如下所示:
select ProductID,
ProductName,
concat((UnitsInStock / (select sum(UnitsInStock) from products))*100, '%')
as Percent_of_total_units_in_stock
from products
order by ProductID;
/*
This query returns the same result as query above.
Here 3119 is hard
大多数SQL专家会说,不能在同一级别的select中重用别名;通常使用CTE;或者将查询包装为子查询,以便引用别名。但是,mySQL似乎允许这样的情况,只要别名在select本身的子查询中被引用;因此从技术上讲,它并不在同一级别。
SELECT CONCAT(a, b) AS c1, CONCAT((SELECT c1), 2)
FROM (SELECT 'a' a, 'b' b, 'c' c UNION ALL
SELECT '1', '2', '3') t1;
SELECT 1
我想在MySQL查询中像这样使用DATEDIFF函数:
SELECT `ItemType`,
`DateOpen` AS StartDate,
IFNULL (`DateClosed`, CURDATE()) AS EndDate,
DATEDIFF(`EndDate`, `StartDate`) AS ItemLife
FROM `Items`
WHERE `ProjectID`=11
ORDER BY `ItemType` ASC
由于DATEDIFF部件,上述查询失败。我尝试了使用和不使用反勾号的列名,没有区别。是我的语法错误,还是我违反
我想要实现的是让用户能够在给定的时间内查询数据库中特定的有价值的事务,比如"34666“&名称。类似于:
SELECT * FROM (SELECT * FROM Ledger WHERE transactiondate BETWEEN '2018-01-01' AND '2018-10-10') WHERE name='Customer' OR surnname='Customer' OR fullnames LIKE %Customer% AND (credit="34666" OR debit
这是我的MySQL查询:
SELECT ROUND( AVG(p.votes), 2) AS 'votes', games.*
FROM games
LEFT JOIN polls p ON (p.gid = games.id)
GROUP BY games.id;
它运行得很好,但是如果polls表中没有任何关于游戏的投票-- votes字段是空的,那么在结果中--我如何替换它,这样它就会显示0 (因为在polls中有0行)。
另外:
你能说出我的病情然后用它吗。用于MySQL的计算?
这就是我的意思:
SELECT ROUND( AVG(votes), 2) AS '
下面是返回子查询的MySQL代码。我希望子查询只返回一行。
SELECT DISTINCT w.cname
FROM works w
WHERE
(SELECT DISTINCT w.cname, AVG(w.salary)
FROM works w
WHERE 1
GROUP BY w.cname
)
<
(SELECT DISTINCT w.cname,AVG(w.salary)
FROM works w
WHERE 1
GROUP BY w.cname
)
MySQL错误说:
1242 -子查询返回多于1行
我有桌子。我需要在我的查询计数一些字段。这是我的疑问:
select COUNT(q1) as 'result'
from (select DISTINCT id_qs as 'q1' FROM main where id_exam=40) as q2
这是一个完美的查询工作。但。当我把它放在php代码中时:
function HowManyQuestion($id)
{
mysql_connect($this->hostname,$this->username,$this->password) OR DIE(
MYSQL在处理带有通过别名调用的表的子查询时触发SQLSTATE42S02错误。
"UPDATE call_log AS c1 INNER JOIN call_log AS c2 ON c1.id = c2.id SET c1.end ='".$reponse."' WHERE c1.id = (SELECT MAX(c2.id) FROM (SELECT * from c2 WHERE c2.num =".$numero." ) derivee )";
期望的结果是更新包含$num表中的call_log变量的最后一行。由于MY
我正在使用Db2,今天我运行了这个查询。
MERGE INTO table1 AS A
USING (VALUES('${user.email}')) AS TMP(EMAIL)
ON A.EMAIL=TMP.EMAIL
那么,在这部分关键词AS中,它是否将TMP创建为一个新表?
我试着用MySQL做一些类比,但它告诉我错了。
select *
from table1 join
table2 using (id) as TMP(EMAIL);
我得到了以下查询,但它不工作。感谢您的帮助。
mysql_query("SELECT * FROM
(SELECT * FROM Names WHERE suffix='1' AND word!='$main_suffix' ORDER BY votes DESC LIMIT 15)
ORDER BY Rand() LIMIT 3");
在下面的MySQL查询中,我能够生成一个求和值,但不能分配一个可以用于在PHP页面中回显的值。
SELECT
invoices.InvoiceNo AS Invoice,
invoices.invDate AS DATE,
invoices.invValue AS Amount,
(
SELECT SUM(invoices.invValue) AS GrandTotal
FROM invoices
WHERE invoices.fKey = 186 AND inv_openClosed = 0
)
FROM
我编写了使用子查询的mysql查询。我不明白为什么mysql在子查询中的“where子句”中显示“未知列”“T.TICKETID”。对于MSSQL,它的工作没有问题。
SELECT @PERIODTYPE := 'Y';
SELECT
@PERIODTYPE,
CASE
WHEN @PERIODTYPE = 'W' THEN DATE_FORMAT(R.DATENEW,'%u')
WHEN @PERIODTYPE = 'M' THEN DATE_FORMAT(R.DATENEW,'%Y-%m&
是否有方法在同一查询中引用MySQL查询的部分?
例如:
SELECT 50000 AS starting_principle, .065*50000 AS interest,
principle + interest AS principle_plus_interest
查询集中的第三列principle_plus_interest给出了一个错误。除了编写50000 + .065*50000 AS principle_plus_interest之外,还有什么方法可以对此进行编码吗?
在像这样的MySQL查询中
SELECT *
FROM (
SELECT user_id
FROM favorites
WHERE user_id >1
UNION SELECT user_id
FROM favorites
WHERE user_id <9
) AS derived
不给收藏夹表起别名可以吗(例如'friends AS f1')我注意到这个查询按预期工作(即返回所有user_ids),但我不知道这样做是不是不好。当我有几个联合时,如果我不必保持所有别名的整齐,那么我的查询就不会那么混乱了。对于何时使用别名,有没有一个好的通用规则(可能是“在使用同
我意识到,MySQL没有要求我为这个查询中的自然连接操作的结果提供别名:SELECT * FROM TABLE1 NATURAL JOIN TABLE2,但是表不是派生的表,因此需要别名吗?这确实是这个问题的后续问题:,我在那里被告知,查询的FROM-部分中的‘新’表是派生表,因此它们需要别名。如果它确实不需要别名,那么如何在这样的子查询中引用这个新表:SELECT * FROM TABLE1 NATURAL JOIN TABLE2 WHERE NOT EXISTS (SELECT * FROM TABLE1 WHERE attribute1='thenewtable'.att
我尝试创建应该删除重复表行的mysql事件。
这是我的查询
DELETE FROM locations
WHERE id NOT IN (SELECT id
FROM locations
GROUP BY acc_id,`date`)
我发现了一个错误:
Error Code: 1093
You can't specify target table 'locations' for update in FROM clause.
如何更改查询以使其工作?
我将函数存储在MySql balance()中。
我想选择余额>100的用户;
这行得通
select user, balance() from users where balance() > 100
这可不是
select user, balance as b from users where b > 100
我不想打两次余额电话。如何编写一个示例中的查询?
我有以下数据:
我运行以下MySQL代码
select distinct i.InstructorID, i.Salary
from Instructor i
where (i.InstructorID NOT IN (select o.InstructorID from Offering o));
它在这里提供了所需的输出:
我怎么能从这个查询中得到薪水呢?
我试过了
$MySQL:>select (i.Salary)
from (select distinct i.InstructorID, i.Salary
from Instructor i
where (i.Instruct
我有一个非常简单的MySQL查询
select clients.id as selected_id,(select clients.id
from clients where clients.id=selected_id)
from clients where clients.id=20
当我在MySQL上运行它时,它运行得很好。但是在Sqlite3上,相同的查询会引发
错误:没有这样的列: selected_id
我试过在谷歌上搜索,但大多数解决方案都是w.r.t。加入。在这里,我需要它的选择部分。
我正在使用一个同时支持MySQL和SQLite的前端。
但是,我正在运行的一个查询在更新部分中有联接。通过谷歌搜索,这在SQLite中是不支持的。
查询是这样的:
UPDATE playertimes t
LEFT JOIN
(SELECT MIN(time) mintime,
MAP,
track,
style
FROM playertimes
GROUP BY MAP,
track,
style) minjoin ON t.time = minjoin.mintime
服务器:MariaDB, version 10.4.17
查询:
select something from (select 1, 2 as something)
phpMyAdmin中的错误:
#1064 - Something is wrong in your syntax 'LIMIT 0, 25'
MySQL工作台中的错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax
我正在尝试执行一个嵌套的select查询,但我一直收到相同的错误,即每个表都必须有自己的别名。
SELECT
Sum(SumOfASSIGN_HOURS) AS SumOfSumOfASSIGN_HOURS,
Sum(SumOfASSIGN_CHARGE) AS SumOfSumOfASSIGN_CHARGE
FROM (
SELECT ASSIGNMENT.PROJ_NUM, SUM(ASSIGNMENT.ASSIGN_HOURS) AS SumOfASSIGN_HOURS,
SUM(ASSIGNMENT.ASSIGN_CHARGE) AS SumOfASSIGN_CHA
我有一个使用InnoDB的关系型InnoDB数据库,它将课程与课程参与者连接起来。此数据库的问题是course_attendees中的course_attendees列没有设置为外键。在course_attendees表试图引用的地方缺少了很多课程。
我想删除那些记录,因为课程已经不属于了。我编写了这个select查询,它选择了应该删除的所有课程:
SELECT
ca.`id`
FROM `course_attendees` AS ca
LEFT JOIN `courses` c
ON ca.`course_id` = c.`id`
WHERE c.`id`
我一直试图在Mysql 5.7中执行以下查询。
DELETE FROM tablename1 T1
WHERE EXISTS (
SELECT *
FROM tablename1 T2
WHERE T2.code = T1.code
AND T2.dname = T2.dname
AND T2.created_date > T1.created_date
);
但是它给我带来了一个错误:原因: liquibase.exception.DatabaseException:您的SQL语法出现了错误;检查与MySQL服务器版本对应的手册,以获得在T1附近使用的正确语法。
此查询在Oracle中
我正在尝试运行以下MySQL查询:
mysql> SELECT num.value, agro.mean, agro.dev
-> FROM randomNumbers num
-> CROSS JOIN (
-> SELECT AVG(value) AS mean, STDDEV(value) AS dev
-> FROM randomNumbers
-> ) agro
-> ORDER BY num.value;
这个例子来自这里,,randomNumbers
我需要在MYSQL中找到以下查询之间的交集
SELECT *
FROM project.backup_table
where project.backup_table.date <= (SELECT date FROM project.main_inout_table ORDER BY date desc LIMIT 1)
and project.backup_table.date >= (SELECT date FROM project.main_inout_table ORDER BY date asc LIMIT 1)
SELECT *
FROM pr
在MySQL外壳程序中,两个几乎相同的查询。一种工作,一种不工作。区别是一个关键词。为什么会这样呢?
根据您在子查询中使用的限制数字,工作查询只获得您选择的薪水。所以“限制4”会给你第四高的薪水。
SELECT SALARY
FROM (
SELECT DISTINCT SALARY
FROM TBLEMPLOYEE
ORDER BY SALARY DESC LIMIT 3
) RESULT
ORDER BY SALARY LIMIT 1
这成功地给出了第三高的薪水。
如果我去掉"result“这个词,它就不再起作用了。结果服务于什么功能