【问题标题】:Return Value from sql commandssql 命令的返回值
【发布时间】:2017-11-02 10:25:22
【问题描述】:

我目前正在使用 SQL 命令

Select * from where name='john'

无论查询是否都可以返回20,例如

Select * from where name='john' or return = 20

【问题讨论】:

  • 您期望的结果是什么?您正在使用* 选择所有列但只想返回 20?如果你想返回 20,你可以使用 SELECT 20 但我觉得这不是你想要的。另外,have a look at this
  • @Tom 如果我运行此命令 Select * from abc where id=88 or (select 20) limit 1 它给了我一行和所有列的结果。但在这里我只想返回 20 .without 更改 Select * from abc where id=

标签: mysql sql


【解决方案1】:

编辑 如果你有一个 oracle 数据库,你可以这样做:

SELECT * 
FROM dual
WHERE 1=0
UNION
SELECT '20'
FROM dual;

【讨论】:

  • 有一个条件我无法更改此部分 Select * from abc where name= ...我只能在“Select * from abc where name”之后添加更改
  • m 出现错误“使用的 SELECT 语句的列数不同”
【解决方案2】:

检查我的答案

 if exists (Select * from item where ItemName='ABC Daycare1')
  begin
  Select * from item where ItemName='ABC Daycare1'
  end
  else
  select '20'

【讨论】:

  • 有一个条件我无法更改此部分 Select * from abc where name= ...我只能在“Select * from where name”之后添加更改
  • @gauravsingh...我不会得到你的人............请让我知道正确的 scnario。然后只有我可以提供准确的答案..
  • 是的,它返回 20 但我想要这样的查询 select * from abc where name ='jinto' 或 select 1000 ,它提供了所有的表数据,但这里不能操作这个 select * from abc wherd name=这应该是固定的,只能在 select * from abc where name= 之后进行操作,并且应该返回 20
  • 就像sql注入
  • 如果我运行此命令 Select * from abc where id=88 or (select 20) limit 1 它会给我一行和所有列的结果。但在这里我只想返回 20 .without 更改 Select * from abc where id=
【解决方案3】:

尝试运行它。这应该返回顶部结果(由于自定义排序,它永远不会是 20),然后当名称与值不匹配时,它会返回 'Mark' 和 20

SQL

IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp

CREATE TABLE #temp (id int NOT NULL, name varchar(255) NOT NULL)

INSERT INTO #temp (id, name) VALUES (88,'John')
INSERT INTO #temp (id, name) VALUES (20,'Mark')

SELECT TOP 1 
    * 
FROM #temp 
WHERE (name = 'Mark' OR name = 'John') 
ORDER BY (
    CASE
        WHEN id = 20 THEN 0 ELSE 1
    END) DESC

MySQL - MySQL fiddle

IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp

CREATE TABLE #temp (id int NOT NULL, name varchar(255) NOT NULL)

INSERT INTO #temp (id, name) VALUES (88,'John')
INSERT INTO #temp (id, name) VALUES (20,'Mark')

SELECT 
    * 
FROM temp 
WHERE (name = 'Mark' OR name = 'John') 
ORDER BY (
    CASE
        WHEN id = 20 THEN 0 ELSE 1
    END) DESC
LIMIT 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多